#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX_N=1e+5;
struct node{
int a,b,c;
};
int fa[MAX_N];
node crime[MAX_N];
bool cmp(node a,node b){
return a.c>b.c;
}
int ancestor(int x){
if(x==fa[x]){
return x;
}else{
return ancestor(fa[x]);
}
}
//表示两个犯人的关系,在同一集合就是在同一监狱,反之不在
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>crime[i].a>>crime[i].b>>crime[i].c;
}
for(int i=1;i<=2*n;i++){
fa[i]=i;
}
sort(crime,crime+m,cmp);
//Kruskal思想 将复仇值从小到大排,
for(int i=0;i<m;i++){
int dx=ancestor(crime[i].a);
int dy=ancestor(crime[i].b);
if(dx==dy){
cout<<crime[i].c;
return 0;//该集合结束
}else{
fa[dx]=ancestor(crime[i].b+n);
fa[dy]=ancestor(crime[i].a+n);
}
}
cout <<"0"<<endl;
return 0;
}
关押罪犯
最新推荐文章于 2025-01-02 20:03:11 发布