并查集模板
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
int s[maxn],n;
void init(){ //初始化父亲数组
for(int i=1;i<=n;++i)
s[i]=i;
}
int find_set(int x){ //查找父亲
return x==s[x]?x:s[x]=find_set(s[x]);
}
void union_set(int x,int y){ //合并集合
x=find_set(x);
y=find_set(y);
if(x!=y) s[x]=s[y];
}
int main(void){
init();
//...
return 0;
}