求助大佬!!!
带权并查集
group[n]=0表示n和n的爸爸是同类
group[n]=1表示n和n的爸爸是敌人
#include<bits/stdc++.h>
using namespace std;
int N,M;
int fa[20100];
int group[20100];
struct Node
{
int x,y;
int c;
};
Node event[100100];
bool cmp(Node a,Node b)
{
return a.c>b.c;
}
int find(int n)
{
if(n!=fa[n])
{
fa[n]=find(fa[n]);
if(group[fa[n]]!=group[n])
group[n]=1;
else
group[n]=0;
}
return fa[n];
}
int main()
{
cin>>N>>M;
for(int i=1;i<=N;i++)
fa[i]=i;
for(int i=1;i<=M;i++)
cin>>event[i].x>>event[i].y>>event[i].c;
sort(event+1,event+1+M,cmp);
for(int i=1;i<=M;i++)
{
int xx=find(event[i].x);
int yy=find(event[i].y);
if(xx==yy)
{
if(group[event[i].x]==group[event[i].y])
{
cout<<event[i].c<<endl;
return 0;
}
}
if(xx!=yy)
{
fa[xx]=yy;
group[xx]=1;
}
}
cout<<0<<endl;
}