码迷,mamicode.com
首页 > 其他好文 > 详细

并查集专题

时间:2015-07-20 23:18:09      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

并查集专题

 

 1 struct UF   {
 2     int rt[MAXN];
 3     void init(void) {
 4         memset (rt, -1, sizeof (rt));
 5     }
 6     int Find(int x) {
 7         return rt[x] == -1 ? x : rt[x] = Find (rt[x]); 
 8     }
 9     void Union(int x, int y)    {
10         x = Find (x);   y = Find (y);
11         if (x == y) return ;
12         rt[x] = y;
13     }
14     bool same(int x, int y) {
15         return Find (x) == Find (y);
16     }
17 }uf;
技术分享
1 int Find(int x) {
2     int p = x;
3     while (rt[x] != -1) x = rt[x];
4     while (p != x)  {
5         int t = rt[p];  rt[p] = x;  p = t;
6     }
7 }
代形式的路径压缩
技术分享
1 void Union(int x, int y)    {
2     x = Find (x);   y = Find (y);
3     if (x == y) return ;
4     if (rk[x] > rk[y])  rt[y] = x;
5     else    {
6         rt[x] = y;
7         if (rk[x] == rk[y]) rk[y]++;
8     }
9 }
按秩合并

 

并查集专题

标签:

原文地址:http://www.cnblogs.com/Running-Time/p/4662674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!