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;
}

 

posted @ 2012-05-27 17:25  Naix_x  阅读(197)  评论(0)    收藏  举报