洛谷交不了,Vjudge上错了
#include<bits/stdc++.h>
using namespace std;
struct city{
int u,v;
int w;
}a[5000];
int fa[105];
int n,m;
bool cmp(city a,city b)
{
return a.w<b.w;
}
int find(int x)
{
if(fa[x]==x)
return x;
else
return fa[x]=find(fa[x]);
}
void gui()
{
int i;
for(i=1;i<=n;i++)
fa[i]=i;
}
int main()
{
while(cin>>n>>m){
if(n==m&&m==0)
break;
int i,j;
for(i=1;i<=m;i++)
cin>>a[i].u>>a[i].v>>a[i].w;
if(m<n-1){
cout<<"-1\n";
continue;
}
sort(a+1,a+1+m,cmp);
int minn=0x7ffffff;
for(j=1;j<=m-n+2;j++){
gui();
int sum=0;
int a1,an;
for(i=j;i<=m;i++){
int u=a[i].u,v=a[i].v;
if(find(fa[u])!=find(fa[v])){
fa[u]=find(fa[v]);
sum++;
}
if(i==j)
a1=a[i].w;
if(sum==n-1){
an=a[i].w;
minn=min(minn,an-a1);
break;
}
}
}
cout<<minn<<endl;
}
return 0;
}