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