首页 > 编程语言 > 详细

最小生成树 Kruskal算法

时间:2015-03-26 22:29:58      阅读:269      评论:0      收藏:0      [点我收藏+]
 1 int n;
 2 int p[MAXN],r[MAXN],u[MAXN],v[MAXN],w[MAXN];
 3 int cmp(const int i,const int j) {
 4     return w[i] < w[j];
 5 }
 6 int find(int x) {
 7     return p[x] == x ? x : p[x] = find(p[x]);
 8 }
 9 int kruskal() {
10     int ans = 0;
11     for(int i = 0;i < n;i ++) p[i] = i;
12     for(int i = 0;i < n;i ++) r[i] = i;
13     sort(r,r + n,cmp);
14     for(int i = 0;i < n;i ++) {
15         int e = r[i];
16         int x = find(u[e]);
17         int y = find(v[e]);
18         if(x != y) {
19             ans = max(ans,w[e]);
20             p[x] = y;
21         }
22     }
23     return ans;
24 }

 

最小生成树 Kruskal算法

原文:http://www.cnblogs.com/mitrenick/p/4370048.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!