并查集模板

Posted mengyinfuioi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并查集模板相关的知识,希望对你有一定的参考价值。

int find(int x){  // 寻找x的根 
	int i=x,j;
	while(root[x]!=x) //如果x的根节点不为他本身则继续找 
		x=root[x];
	while(i!=x){ // 路径压缩 
		j=root[i];
		root[i]=x;
		i=j;	
	}
	return x;
}
void Union(int x,int y){  // 合并x,y成一个集合 
    int a=find(x);//x的根节点为a
    int b=find(y);//y的根节点为b
    if(a!=b)//如果a,b不相等,表示不是一个集合 
    {
        root[a]=b;
    }
}
void init(int n){ // 一开始对root数组进行初始化 
	for(int i=1;i<=n;i++){
		root[i]=i;  
	}
}

  

以上是关于并查集模板的主要内容,如果未能解决你的问题,请参考以下文章

Tarjan 模板,高级并查集

并查集题目模板及java代码

并查集模板(洛谷——模板并查集)

并查集模板

带权并查集(含种类并查集)经典模板 例题:①POJ 1182 食物链(经典)②HDU - 1829 A bug's life(简单) ③hihoCoder 1515 : 分数调查(示例代码(代

ybtoj并查集例题1模板并查集