并查集代码真是又短又有趣,易于理解见详解 .
int n,m,k;
int p[MS],tr[MS],fa[MS];
void init(){
for(int i=1;i<=n;i++) fa[i] = i;
}
int find(int x){
if(x == fa[x]) return x;
else return fa[x] = find(fa[x]);
}
void merge(int x,int y){
fa[find(x)] = find(y);
}
原文:https://www.cnblogs.com/Tecode/p/13166487.html