P1525 关押罪犯

 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 }
View Code

 

posted on 2019-10-09 13:42  thjkhdf12  阅读(120)  评论(0)    收藏  举报