并查集模板
#include<stdio.h>
#include<iostream>
const int N=1000;
using namespace std;
int ptr[N];// 结点的上级
int find(int x)//查找上级
{
int r=x;
while(pre[r]!=r)// 上级不是自己
{
r=pre[r];//逐级上查
}
int k = x,j; //暂存 结点
while(k != r)//掌门不是自己 非递归路径压缩操作
{
j = pre[k]; //用j暂存pre[k]的父节点
pre[k] = r; //pre[x] 指向掌门 更换掌门
k = j; //k移到父节点
}
return r;//直到找到 自己的上级
}
int join(int x,int y)//并 上级
{
int fx=find(x);//两个人的上级
int fy=find(y);
if(fx!=fy)
pre[fx]=fy;// 两个人把其中的一个人分到另一个人的门下
}
int main()
{
return 0;
}