路径压缩查找 递归方式(数据太大可能栈溢出) int find(int x) { if(x==father [x]) return x; else father[x]=find(father[x]); //路径压缩 } 非递归方式 int find(int x) { int r = x; while (r != city[r]) { r = city[r]; } int j; while (x != r) { j = city[x]; city[x] = r; x = j; } } }