先按时间排序,然后并查集合并,样例过不了(悲
#include<bits/stdc++.h>
using namespace std;
int fa[10100];
struct gl{
int a;
int b;
int c;
}e[101000];
int cmp(gl l1,gl l2){
return l1.c<l2.c;
}
int find(int x){
while(x!=fa[x]) x=fa[x]=fa[fa[x]];
return x;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=m;i++) cin>>e[i].a>>e[i].b>>e[i].c;
sort(e+1,e+m+1,cmp);
for(int i=1;i<=m;i++){
int k=0;
int x=find(e[i].a),y=find(e[i].b);
fa[x]=y;
for(int j=1;j<n;j++){
if(fa[j]!=fa[j+1]){
k=1;
break;
}
}
if(k==0){
cout<<e[i].c<<endl;
return 0;
}
}
cout<<"-1"<<endl;
return 0;
}