定义:并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。
操作:
1.初始化father数组
void init()
{
for(int i=1;i<=n;i++)
father[i]=i;//使每个元素的根节点为自己
}
2.查找
int find(int x)
{
if(father[x]==x)
return x;
return father[x]=find(father[x]);
}
3.合并:将两个元素所在的集合合并为一个集合。合并之前,应先判断两个元素是否属于同一集合(通过查找实现)
void join(int x,int y)
{
int fx=find(x),fy=find(y);//找到各自的根节点
if(fx!=fy)//如果不属于同一个集合,则合并为一个集合
father[fx]=fy;
}