并查集板子
find 函数中全为p[x],仅一个x
int p[N];
//p[i]代表i所在连通块的集合号(或父节点)
int find(int x){
if(x!=p[x]){
//还没找到几何顶点,则继续往上找
//且采用路径压缩
p[x]=find(p[x]);
}
//找到了集合顶点,则返回集合顶点
return p[x];
//并查集最后返回一定是p[x]
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
p[i]=i;
//初始化并查集,每个结点自己为一个集合
}
if(find(a)!=find(b)){
//两个点要相连,且不是同一个集合
p[find(a)]=find(b);
//归为同一个集合
}
}