并查集部分模板
并查集的查询操作。
const int N=100001;
int p[N];
int x,y;
int find(int x)//查询操作,并且实现了路径压缩
{
if(p[x]!=x)
p[x]=find(p[x]);
return p[x];
}
并查集的初始化 (让每个节点都等于自己所处的节点数)。
for(int i=1;i<=n;i++)//并查集的初始化
p[i]=i;
两个集合合并,即将一个集合插到另一个集合下。
x=find(x),y=find(y);
p[x]=y;
//两操作等价
p[find(x)]=find(y);
判断两集合是否同属于同一个节点
find(x)==find(y)
以上就是并查集的部分操作了