- 创建
1 const int maxn=5000; 2 int father[maxn]; 3 void make(){ 4 for(int i=0;i<maxn;i++) //初始化 5 father[i]=i; //令每个元素的父亲都是元素本身 6 } - 查找
1 int find(int x){ 2 if(x!=father[x]) //若父亲不为本身,则寻找元素x的祖先 3 father[x]=find(father[x]); //通过寻找元素x父亲的父亲找到祖先 4 return father[x]; //返回元素x的祖先 5 } - 合并
1 void merge(int x,int y){ 2 x=find(x); //寻找x的祖先 3 y=find(y); //寻找y的祖先 4 if(x==y) //若x和y为同一祖先,return 5 return; 6 father[x]=y;//else令x的祖先为y,x集合从属于y集合 7 }