#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 20010, M = 100010;
int p[N], n, m, enemy[N];
struct Node {
int a, b, w;
bool operator < (const Node &t) const {
return w > t.w;
}
} e[M];
int find(int x) {
if(p[x] != x) p[x] = find(p[x]);
return p[x];
}
void merge(int a, int b) {
p[find(a)] = find(b);
}
int main() {
cin>>n>>m;
for(int i = 1; i <= n; i++)
p[i] = i;
for(int i = 1; i <= m; i++) {
int a, b, w;
cin>>a>>b>>w;
e[i] = {a, b, w};
}
sort(e + 1, e + m + 1);
for(int i = 1; i <= m; i++) {
if(find(e[i].a) == find(e[i].b)) {
cout<<e[i].w<<endl;
return 0;
}
if(!enemy[e[i].a]) enemy[e[i].a] = e[i].b;
else merge(enemy[e[i].a], e[i].b);//问题在这里
if(!enemy[e[i].b]) enemy[e[i].b] = e[i].a;
else merge(enemy[e[i].b], e[i].a);
}
cout<<0<<endl;
return 0;
}
为什么把
if(!enemy[e[i].a]) enemy[e[i].a] = e[i].b;
else merge(enemy[e[i].a], e[i].b);
改成
if(!enemy[e[i].a]) enemy[e[i].a] = e[i].b;
else merge(enemy[e[i].b], e[i].a);
就过不了了呢?