/* *题目大意: *一个简单图,n个点,m条边; *要求一颗生成树,使得其最大边与最小边的差值是所有生成树中最小的,输出最小的那个差值; *算法分析: *枚举最小边,用kruskal求生成树,不断更新差值得到最优值;**/#include#include #include #include #include #include #include using namespace std;const int N=111;const int M=5555;const int INF=0xffffff;int n,m;int p[N];struct Edge{ int u,v,w;} e[M];int cmp(const void *a,const void *b){ Edge *x=(Edge *)a; Edge *y=(Edge *)b; return x->w-y->w;}int find(int x){ if(p[x]!=x) p[x]=find(p[x]); return p[x];}int Kruskal(int s){ int cnt=0;//记录边数 for(int i=1; i<=n; i++) p[i]=i; int t=s; int flag=1; while(t