void init()//初始化函数 { int i; for(i = 1; i <= n; i ++) f[i] = i; return; } int find(int v)//查找根结点 { if(f[v] == v) return v; else { //这里是路径压缩,每次在函数返回时,把遇到的结点改为根结点的编号 //提高找到根结点的速度 f[v] = find(f[v]); return f[v]; } } void merge(int x,int y)//合并两个子集的函数 { int t1,t2; t1 = find(x); t2 = find(y); if(t1 != t2) { f[t1] = t2; } return; }