Union Find

图解: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 }

 

posted @ 2019-07-03 16:49  XXrl  阅读(98)  评论(0编辑  收藏  举报