并查集
2014年03月06日
⁄ 综合
⁄ 共 1143字 ⁄ 字号
小 中 大
- class UFSet
- {
- typedef struct UFSetNode
- {
- long parent;
- long rank;
- }UFSetNode;
-
- public:
-
- UFSet(long sz)
- {
- size = sz;
-
- elem = new UFSetNode[size];
-
- for(long i = 0; i < size; i++)
- {
- elem[i].parent = -1;
- elem[i].rank = 0;
- }
- }
- ~UFSet() { delete [] elem; }
- long FindSet(long x)
- {
- long i, temp;
- for(i = x; elem[i].parent > 0; i = elem[i].parent)
- ;
- while(i != x)
- {
- temp = elem[x].parent;
- elem[x].parent = i;
- x = temp;
- }
-
- return i;
- }
- void Union(long a, long b)
- {
- long fa, fb;
- fa = FindSet(a);
- fb = FindSet(b);
- if(fa == fb)
- {
- return;
- }
- if(elem[fa].parent < elem[fb].parent)
- {
- elem[fa].parent += elem[fb].parent;
- elem[fb].parent = fa;
- }
- else
- {
- elem[fb].parent += elem[fa].parent;
- elem[fa].parent = fb;
- }
- }
-
- private:
-
- long size;
- UFSetNode *elem;
- };
- 该日志由 wangling11111111 于10年前发表在综合分类下,最后更新于 2014年03月06日.
- 转载请注明: 并查集 | 学步园 +复制链接