并查集模板
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; } }
以上是关于并查集模板的主要内容,如果未能解决你的问题,请参考以下文章
带权并查集(含种类并查集)经典模板 例题:①POJ 1182 食物链(经典)②HDU - 1829 A bug's life(简单) ③hihoCoder 1515 : 分数调查(示例代码(代