并查集
并查集是个数据结构,围绕着一个就是根节点展开,若两点的根节点相同那么就肯定在一棵树内,所以我们只需要维护一个点的父亲节点就好了,然后每次询问都查找根节点是否相同。
但若树退化成链的话,我们就需要判断两点和根节点的关系,保留当前点的根节点关系就好了,这样的优化方式我们叫做路径压缩。
1.普通并查集模板
初始化:
void mem(int n)
{
for (int i=0;i<=n;i++)
{
father[i]=i;
R[i]=1;
}
}
查询操作:
int find(int x)
{
if(x==father[x