poj 1611 The Suspects(简单并查集)

题目:http://poj.org/problem?id=1611

0号是病原,求多少人有可能感染

 1 #include<stdio.h>
 2  #include<string.h>
 3  #define maxn 50000
 4  
 5  int u,v,bin[maxn];
 6  int find(int x)
 7  {
 8      return bin[x]==x?x:(bin[x]=find(bin[x]));
 9  };
10  
11  int main()
12  {
13      int n,m,i,j,x,y,k,sum,t;
14      while(~scanf("%d%d",&n,&m)&&(n!=0||m!=0))
15      {
16          sum=1;
17          for(i=0; i<n; i++)
18              bin[i]=i;
19          for(i=0; i<m; i++)
20          {
21              scanf("%d",&k);
22              scanf("%d",&u);
23              for(j=1; j<k; j++)
24              {
25                  scanf("%d",&v);
26                  x=find(u);
27                  y=find(v);
28                  if(x!=y)
29                      bin[x]=y;
30              }
31          }
32          t=find(0);
33          for(i=1; i<n; i++)
34          {
35              if(find(i)==t)
36                  sum++;
37          }
38          printf("%d\n",sum);
39      }
40  }
41  

 

posted @ 2013-08-19 19:45  水门  阅读(221)  评论(0编辑  收藏  举报