您的位置:首页 > 编程语言 > C语言/C++

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
—————————————————————————————————
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ ACM