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

并查集 -- HDU 1232 UVALA 3644

时间:2015-05-25 00:44:30      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

并查集:

 1 int pa[maxn],Rank[maxn];
 2 ///初始化 x 集合
 3 void make_set(int x)
 4 {
 5     pa[x]=x;
 6     Rank[x]=0;
 7 }
 8 ///递归查找 x 所在的集合
 9 int find_set(int x)
10 {
11     if(pa[x]!=x) pa[x]=find_set(pa[x]);
12     return pa[x];
13 }
14 ///更新根节点,如果不更新可能会暴栈
15 void mix(int x,int y)
16 {
17     int xx=find_set(x);
18     int yy=find_set(y);
19     if(xx!=yy)
20     {
21         pa[yy]=xx;
22     }
23 }
24 ///锁点,合并 x, y 所在的集合,用到路径压缩,按秩合并
25 ///启发式合并
26 void Union(int x,int y)
27 {
28     x=find_set(x);
29     y=find_set(y);
30     if(Rank[x]>Rank[y])
31         pa[y]=x;
32     else if(Rank[x]<Rank[y])
33         pa[x]=y;
34     else if(Rank[x]==Rank[y])
35     {
36         pa[x]=y;
37         Rank[y]++;
38     }
39 }

 

初级并查集:HDU-理解 find_set()

题意:n个结点,m条边,求再连几条边能使得全部结点连通;

思路:并查集,求该图中有几个连通分支,然后连通块的个数-1;

技术分享1232

 

并查集 -- HDU 1232 UVALA 3644

标签:

原文地址:http://www.cnblogs.com/ACMERY/p/4526815.html

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