原题链接
本题需要知道一个结论,最小生成树的最大权值在所有生成树中也是最小的。
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,root;
const int M=1e5+10;
const int N=5e4+10;
struct edg{
int v,u,t;
bool operator <(const edg e1)const{
return t<e1.t;
}
}e[M];
int p[N];
int find(int u){
if(p[u]!=u)p[u]=find(p[u]);
return p[u];
}
int main(){
cin>>n>>m>>root;
for(int i=0;i<m;i++)
cin>>e[i].v>>e[i].u>>e[i].t;
for(int i=1;i<=n;i++)
p[i]=i;
sort(e,e+m);
int res=0;
for(int i=0;i<m;i++)
if(find(e[i].v)!=find(e[i].u)){
p[find(e[i].v)]=find(e[i].u);
res=e[i].t;
}
cout<<res;
}