并查集代码真是又短又有趣,易于理解见详解 .
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); }