UVa1935
来源:互联网 发布:淘宝代发网 编辑:程序博客网 时间:2024/06/03 19:41
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAXN 110
#define INF 999999999
using namespace std;
int n,m;
int fa[MAXN];
int maxn;
struct node
{
int x,y;
int d;
bool operator < (const node& a)const
{
return d < a.d;
}
};
node date[MAXN*MAXN];
int find(int x)
{
return x == fa[x]?x:fa[x] = find(fa[x]);
}
bool MTS(int x )
{
maxn = -1;
int num = 0;
for( int i = 0; i <= n; i ++)
{
fa[i] = i;
}
for( int i = x; i < m; i ++)
{
int root1 = date[i].x;
int root2 = date[i].y;
int d = date[i].d;
int X = find(root1);
int Y = find(root2);
if(X != Y)
{
fa[X] = Y;
maxn = max(d,maxn);
if(++num == n-1)
{
return true;
}
}
}
return false;
}
int main()
{
while(scanf("%d%d",&n,&m))
{
if(n == 0 && m == 0)
break;
for( int i = 0 ; i < m; i ++)
{
scanf("%d%d%d",&date[i].x,&date[i].y,&date[i].d);
}
sort(date,date+m);
int ans = INF;
for( int i = 0 ; i < m; i ++)
{
if(MTS(i))
{
ans = min(ans,maxn - date[i].d);
}
}
if(ans == INF)
printf("-1\n");
else
{
printf("%d\n",ans);
}
}
return 0;
}
0 0