【模板】并查集

 1 #define MAX_N 10000
 2 
 3 int par[MAX_N];
 4 
 5 //并查集初始化,初始化n个元素
 6 void init(int n)
 7 {
 8     for(int i=0;i<n;i++)
 9         par[i]=i;
10 }
11 
12 //并查集查询操作,查询树的根
13 int Find(int x)
14 {
15     if(par[x]==x)
16         return x;
17     return par[x]=Find(par[x]);
18 }
19 
20 //并查集合并操作,合并x和y所属集合
21 void  Unite(int x,int y)
22 {
23     x=Find(x);
24     y=Find(y);
25     if(x!=y)
26         par[y]=x;
27 }

 

posted @ 2014-02-19 08:42  ~~Snail~~  阅读(168)  评论(0编辑  收藏  举报