发现和题解很相似,但就是不对。
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct zf{//罪犯
int a,b,c;
}a[20005];
int dr[20005];//敌人
int f[20005];//父
bool cmp(zf a,zf b){
return a.c>b.c;
}
int find(int x){
if(f[x]==x)
return x;
f[x]=find(f[x]);
return f[x];
}
void hb(int x,int y){
x=find(x);
y=find(y);
if(x!=y)
f[x]=y;
return;
}
int main(){
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
f[i]=i;
for(int i=1;i<=m;i++)
scanf("%d %d %d",&a[i].a,&a[i].b,&a[i].c);
sort(a+1,a+m+1,cmp);
for(int i=1;i<=m;i++){
if(find(a[i].a)==find(a[i].b)){
printf("%d",a[i].c);
return 0;
}
else{
if(dr[a[i].a]==0)dr[a[i].a]=a[i].b;
else hb(a[i].b,dr[a[i].a]);
if(dr[a[i].b]==0)dr[a[i].b]=a[i].a;
else hb(a[i].a,dr[a[i].b]);
}
}
printf("0");
return 0;
}