1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 int fa[20010]; 6 7 int find(int x) 8 { 9 if (x == fa[x]) 10 return x; 11 fa[x] = find(fa[x]); 12 return fa[x]; 13 } 14 15 int n, m; 16 int em[20010]; 17 18 struct Edge 19 { 20 int u, v, w; 21 bool operator >(const Edge s)const 22 { 23 return w > s.w; 24 } 25 }e[100010]; 26 27 int main() 28 { 29 cin >> n >> m; 30 for (int i = 1; i <= n; i++) 31 fa[i] = i; 32 for (int i = 1; i <= m; i++) 33 { 34 cin >> e[i].u >> e[i].v >> e[i].w; 35 } 36 sort(e + 1, e + m + 1, greater<Edge>()); 37 for (int i = 1; i <= m; i++) 38 { 39 if (find(e[i].u) == find(e[i].v)) 40 { 41 cout << e[i].w; 42 return 0; 43 } 44 if (!em[e[i].u]) em[e[i].u] = e[i].v; 45 else fa[find(em[e[i].u])] = find(e[i].v); 46 if (!em[e[i].v]) em[e[i].v] = e[i].u; 47 else fa[find(em[e[i].v])] = find(e[i].u); 48 } 49 cout << 0; 50 }
原文:https://www.cnblogs.com/thjkhdf12/p/11641281.html