HDOJ_1232 并查集 畅通工程

#include<stdio.h>

int bin[1001];

int find(int x)

{

    int t=x;

    while(bin[t]!=t)

        t=bin[t];

    return t;

}

void insert(int x,int y)

{

    int fx,fy;

    fx=find(x);

    fy=find(y);

    if(fx!=fy)

        bin[fx]=fy;

}

int main()

{

    int n,m,a,b,i,sum;

    while(scanf("%d",&n),n)

    {

        for(i=0;i<=n;++i)

            bin[i]=i;

        scanf("%d",&m);

        for(i=m;i>0;i--)

        {

            scanf("%d%d",&a,&b);

            insert(a,b);

        }

        sum=-1;

        for(i=1;i<=n;++i)

            if(bin[i]==i)

                sum++;

        printf("%d\n",sum);



    }

    return 0;

}

 

你可能感兴趣的:(并查集)