#include<bits/stdc++.h>
using namespace std;
struct node{
int v,x,y;
};
node a[10005];
bool cmp(node s1,node s2){
return s1.v>s2.v;
}
int n,m,f[100005];
int find(int x){
if(f[x]==x){
return x;
}
return f[x]=find(f[x]);
}
int main(){
// freopen("prison.in","r",stdin);
// freopen("prison.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=2*n;i++){
f[i]=i;
}
for(int i=1;i<=m;i++){
cin>>a[i].x>>a[i].y>>a[i].v;
}
sort(a+1,a+1+m,cmp);
for(int i=1;i<=m;i++){
if(find(a[i].x)==find(a[i].y)){
cout<<a[i].v;
return 0;
}
f[find(a[i].x)]=find(a[i].y+n);
f[find(a[i].y)]=find(a[i].x+n);
}
cout<<0;
return 0;
}
第二十九行
find(a[i].x)==find(a[i].y)
应该是
find(a[i].x)==find(a[i].y)||find(a[i].x+n)==find(a[i].y+n)
但是前者也能对。 应为如果他们的敌人也在同一阵营,那么也应该直接退出。