#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,f[40002],ans;
struct node{
int a,b,c;
}z[100002];
bool cmp(node a,node b){
return a.c>b.c;
}
int find(int a){
if(a!=f[a]) f[a]=find(f[a]);
return f[a];
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++) scanf("%d%d%d",&z[i].a,&z[i].b,&z[i].c);
for(int i=1;i<=n;i++) f[i]=i;
sort(z+1,z+m+1,cmp);
for(int i=1;i<=m;i++){
int a=find(z[i].a),b=find(z[i].b);
if(a==b){
ans=z[i].c;
break;
}
f[a]=find(z[i].b+n),f[b]=find(z[i].a+n);
}
cout<<ans;
}
最近刚学集合,有问题求大佬指出。