#include<bits/stdc++.h>
#define F(i,n,m) for(int i=n;i<=m;i++)
using namespace std;
struct hh{
int x,y,t;
}a[200000];
int n,m,f[30010],num=0,ans=0;
int cmp(const hh &a,const hh &b){return a.t<b.t;}
int findf(int a){return f[a]==a?a:f[a]=findf(f[a]);}//求祖先
void unit(int a,int b) { f[findf(a)]=findf(b);n--;}//连接
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>a[i].x>>a[i].y>>a[i].t;
sort(a+1,a+m+1,cmp);//根据小时来由小到大
F(i,1,n)f[i]=i;//初始化 遍历点
F(i,1,m)//遍历边
{
int fx=findf(a[i].x),fy=findf(a[i].y);
if(fx!=fy)f[fx]=fy,n--;
if(n==1){
cout<<a[i].t;return 0;
}
}
cout<<"-1"<<endl;
return 0;
}
P1111 修复公路【并查集】
最新推荐文章于 2023-01-05 21:08:32 发布