码迷,mamicode.com
首页 > 其他好文 > 详细

hdu1301 Jungle Roads 基础最小生成树

时间:2017-08-06 18:00:24      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:using   hdu1301   nbsp   log   const   blog   void   class   int   

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 
 5 const int maxn = 10005;
 6 int n, m;
 7 int fa[28];
 8 struct node
 9 {
10     int x, y;
11     int cost;
12 }arr[maxn];
13 
14 void init()
15 {
16     for (int i = 0; i <= maxn; i++)
17     {
18         fa[i] = i;
19     }
20 }
21 
22 int find(int x)
23 {
24     if (x != fa[x])
25     {
26         return find(fa[x]);
27     }
28     else
29         return fa[x];
30 }
31 
32 bool cmp(node a, node b)
33 {
34     return a.cost<b.cost;
35 }
36 
37 int main()
38 {
39     char c1, c2;
40     int k, c;
41     while (cin >> n)
42     {
43         if (n == 0) break;
44         int j = 0;    //表示边的数量 
45         init();
46         for (int i = 1; i<n; i++)
47         {
48             cin >> c1 >> k;
49             while (k--)
50             {
51                 cin >> c2 >> c;
52                 arr[j].x = c1 - A;
53                 arr[j].y = c2 - A;
54                 arr[j].cost = c;
55                 j++;
56             }
57         }
58         sort(arr, arr + j, cmp);    //排序 
59         int ans = 0;
60         for (int i = 0; i<j; i++)
61         {
62             int fx, fy;
63             fx = find(arr[i].x);
64             fy = find(arr[i].y);
65             if (fx != fy)
66             {
67                 ans += arr[i].cost;
68                 fa[fy] = fx;
69             }
70         }
71         cout << ans << endl;
72     }
73     return 0;
74 }

 

hdu1301 Jungle Roads 基础最小生成树

标签:using   hdu1301   nbsp   log   const   blog   void   class   int   

原文地址:http://www.cnblogs.com/jaydenouyang/p/7295285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!