Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
57251 | 陈路垚 | 最小差值生成树 | C++ | 通过 | 100 | 20 MS | 320 KB | 1063 | 2022-08-04 12:33:13 |
#include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f struct node{ int u,v,w; }l[5005]; bool cmp(node x,node y){ return x.w<y.w; } int n,m,flag,f[5005]; int getf(int v){ if(f[v]==v)return v; return f[v]=getf(f[v]); } int main(){ while(cin>>n>>m&&(n||m)){ for(int i=0;i<=n;i++)f[i]=i; for(int i=0;i<m;i++) cin>>l[i].u>>l[i].v>>l[i].w; sort(l,l+m,cmp); flag=inf; for(int i=0;i<m;i++) { int cns=0; for(int j=0;j<=n;j++)f[j]=j; for(int j=i;j<m;j++) { int t1=getf(l[j].u); int t2=getf(l[j].v); if(t1!=t2){ cns++; f[t2]=t1; if(cns==n-1){ flag=min(flag,l[j].w-l[i].w); break; } } } } if(flag==inf) cout<<-1<<endl; else cout<<flag<<endl; } return 0; }