简单的写一下并查集模板
#include<bits/stdc++.h>
using namespace std;
const int MAXN(1E6+5);
int fa[MAXN];
int n,m;
//一、初始化
void init(){
for(int i=1;i<=n;i++)
fa[i]=i;
}
//二、 得到祖宗节点编号
int find(int x){ // find() 函数;
if(fa[x]==x)
return x;
// 路径压缩
return fa[x]=find(fa[x]);
}
//三、合并两个集合
void merge(int x,int y){
// 得到 x 父节点
x = find(x);
// 得到 y 父节点
y = find(y);
if(x!=y)
fa[x] = y;
}
并查集的应用情况很多,多刷题目一定要。