SDUT 2129树结构练习——判断给定森林中有多少棵树(并查集)

题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2129

最裸的并查集。。模板代码,好久没打过了。

#include<stdio.h>

int p[1001];

int find(int x)

{

    int a=x;

    while(p[a]!=a)

    a=p[a];

    return a;

}

void mermge(int x,int y)

{

    int x1=find(x),y1=find(y);

    if(x1!=y1)

    p[x1]=y1;

}

int main()

{

   int a,b,c,m,n;

   while(scanf("%d%d",&a,&b)!=EOF)

   {

       for(c=1;c<=a;c++)

       p[c]=c;

       for(c=1;c<=b;c++)

       {

           scanf("%d%d",&m,&n);

           mermge(m,n);

       }

       for(c=1,n=0;c<=a;c++)

       {

           if(p[c]==c)

           n++;

       }

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

   }

   return 0;

}

 

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