poj-3522-Slim
2014-04-10 21:18
337 查看
#include <iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> #include<stack> #include<math.h> using namespace std; #define maxm 110*110 #define maxn 110 #define eps 0.000001 #define zero(x) ((fabs(x)<eps?0:x)) #define INF 99999999 struct list { int u; int v; int w; friend bool operator < (const list &a,const list &b) { return a.w<b.w; } }edge[maxm]; int f[maxn]; int find(int x) { while(x!=f[x])x=f[x]; return x; } int main() { int n,m,i,j,k; while(~scanf("%d%d",&n,&m)&&(n||m)) { for(i=1;i<=m;i++) { scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w); } sort(edge+1,edge+m+1); int minn=INF; for(k=1;k<=m;k++) { for(i=1;i<=n;i++)f[i]=i; int l=0; int amin,amax; amin=INF; amax=-1; for(i=k;i<=m;i++) { int a=find(edge[i].u); int b=find(edge[i].v); if(a==b)continue; l++; amin=min(amin,edge[i].w); amax=max(amax,edge[i].w); f[a]=b; if(l==n-1)break; } if(l!=n-1)break; minn=min(minn,amax-amin); } if(minn==INF)cout<<"-1"<<endl; else cout<<minn<<endl; } return 0; }
—————————————————————————————————
本文原创自Slience的csdn技术博客。
本博客所有原创文章请以链接形式注明出处。
欢迎关注本技术博客,本博客的文章会不定期更新。
大多数人想要改造这个世界,但却罕有人想改造自己。
世上没有绝望的处境,只有对处境绝望的人。
————By slience
—————————————————————————————————
相关文章推荐
- POJ - 3522 Slim Span (kruskal+枚举)
- poj 3522 Slim Span(最小生成树)kruskal算法
- POJ 3522 Slim Span(最小生成树)
- poj 3522 Slim Span(Kruskal+枚举)
- poj 3522 Slim Span(Kruskal+枚举)
- POJ 3522 - Slim Span 求一颗生成树,让最大边最小边差值最小
- POJ 3522 Slim Span(最瘦生成树)
- uva 1359 poj 3522 Slim Span(最小生成树)
- poj 3522 Slim Span(Kruskal+枚举)
- poj 3522 Slim Span
- POJ 3522 Slim Span (Kruskal +枚举 边权差最小的生成树)
- POJ 3522 Slim Span (最小生成树)
- poj 3522 Slim Span(Kruskal+枚举)
- POJ 3522 Slim Span 生成树
- (hruscal12.3.3)POJ 3522 Slim Span(求解一个生成树使得该树中的最大边权值和最小边权值之差最小)
- poj 3522【Slim Span】
- POJ 3522 Slim Span【枚举+克鲁斯卡尔求最小生成树】
- poj 3522 Slim Span (最小生成树 的 一个性质 kruskal 的 应用 )
- poj 3522 Slim Span (最小生成树kruskal)
- poj 3522 Slim Span(Kruskal+枚举)