#include<bits/stdc++.h>
using namespace std;
int n,m;
bool flag=false;
int minn=0x3f3f3f3f;
const int maxn=1e5+7;
int father[maxn];
struct edge{
int u,v,w;
}e[maxn];
bool cmp(edge a,edge b){
return a.w<b.w;
}
int get(int a){
if(father[a]==a) return a;
else return father[a]=get(father[a]);
}
void merge(int a,int b){
a=get(a);
b=get(b);
if(a!=b) father[a]=b;
}
void kruskal(int k){
for(int i=1;i<=n;i++) father[i]=i;
int ans=0;
int res=n;
int la;
for(int i=k;i<=m&&res>1;i++){
int u=get(e[i].u);
int v=get(e[i].v);
if(u!=v){
res--;
merge(e[i].u,e[i].v);
ans+=e[i].w;
la=e[i].w;
}
}
if(res==1) minn=min(minn,la-e[k].w),flag=true;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>e[i].u>>e[i].v>>e[i].w;
}
sort(e+1,e+1+m,cmp);
for(int i=1;i<=m-(n-1)+1;i++) kruskal(i);
if(flag) cout<<minn;
else cout<<-1;
}
计蒜客 高速公路
最新推荐文章于 2022-04-23 12:37:32 发布