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

并查集(模板)

时间:2016-03-08 21:04:40      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

 1 int p[MAX];//父亲
 2 int rank[MAX];//树的高度
 3 
 4 //初始化n个元素
 5 int init(int n)
 6 {
 7     for(int i=0; i<n; i++){
 8         p[i]=i;
 9         rank[i]=0;
10     }
11 }
12 
13 //查询树的根
14 int find(int x)
15 {
16     if(p[x]==x)
17         return x;
18     else
19         return p[x]=find(p[x]);
20 }
21 
22 //合并x和y所属的集合
23 void unite(int x,int y)
24 {
25     x=find(x);
26     y=find(y);
27     if(x==y)  return ;
28     if(rank[x]<rank[y]){
29         p[x]=y;
30     }
31     else{
32         p[y]=x;
33         if(rank[x]=rank[y])
34             rank++;
35     }
36 }

 

并查集(模板)

标签:

原文地址:http://www.cnblogs.com/wangmengmeng/p/5255399.html

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