【Kruskal】P2330 [SCOI2005]繁忙的都市

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 
 5 int fa[301];
 6 
 7 int find(int x)
 8 {
 9     if (x == fa[x]) return x;
10     fa[x] = find(fa[x]);
11     return fa[x];
12 }
13 
14 struct Edge
15 {
16     int u, v, w;
17     bool operator <(Edge s)
18     {
19         return w < s.w;
20     }
21 }e[100010];
22 
23 int n, m;
24 
25 int main()
26 {
27     cin >> n >> m;
28     for (int i = 1; i <= m; i++)
29     {
30         if(i<=n) fa[i] = i;
31         int a, b, c;
32         cin >> a >> b >> c;
33         e[i].u = a;
34         e[i].v = b;
35         e[i].w = c;
36     }
37     sort(e + 1, e + m + 1);
38     int tot = 0;
39     int maxs = -1;
40     for (int i = 1; i <= m; i++)
41     {
42         if (find(e[i].u) != find(e[i].v))
43         {
44             maxs = max(maxs, e[i].w);
45             fa[find(e[i].u)] = e[i].v;
46             tot++;
47             if (tot >= n - 1)
48             {
49                 cout << tot << " " << maxs;
50                 return 0;
51             }
52         }
53     }
54 }
View Code

 

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