图解:https://blog.csdn.net/niushuai666/article/details/6662911
实现:用 pre[N]数组记录一个数的上级是谁,要想知道最高级,需要一级级查上去。
1 int unionfind(int root) 2 { 3 int son,tmp; 4 son=root; 5 while(root!=pre[root]) //上级不是自身,找到最高级 6 root=pre[root]; 7 while(son!=root) //令所有中间级都指向最高级 8 { 9 tmp=pre[son]; 10 pre[son]=root; 11 son=tmp; 12 } 13 return root; 14 }