Algorithms (并查集)

来源:互联网 发布:sql取前几个字符 编辑:程序博客网 时间:2024/06/18 02:55
/*------------------------------------------------------------------------- * Project: Union.cpp * Name: zwp * Date: 2014/5 *---------------------------------------------------------------------------------*/ #include <stdio.h> #include <stdlib.h>const int MAXSIZE = 500;int uset[MAXSIZE];void makeSet(int size){    for(int i = 0; i < size; ++ i)    {        uset[i] = -1;    }}/*int find(int x){    if(uset[x] < 0)        return x;    uset[x] = find(uset[x]);    return uset[x]; }*/int find(int x){    int p = x, t;    while(uset[p] >= 0)        p = uset[p];    while(x != p)    {        t = uset[x];        uset[x] = p;        x = t;    }    return x;}void unionSet(int x, int y){    if((x = find(x)) == (y - find(y)))        return;    if(uset[x] < uset[y])    {        uset[x] += uset[y];        uset[y] = x;    }    else    {        uset[y] += uset[x];        uset[x] = y;    }} int main(int argc, char* argv[]) {    makeSet(100);    unionSet(4, 5);    unionSet(10, 78);    printf("%d\n", find(4));    printf("%d\n", find(10));     system("pause");     return 0; }


并查集

 

 

0 0