http://www.elijahqi.win/2017/07/11/poj-1611/
题目
http://poj.org/problem?id=1611
模板题
#include<cstdio>
#define N 33000
int f[N],tmp1,tmp2,ans,n,m,k,s1,s2;
int gf(int x){
return (x==f[x])?x:f[x]=gf(f[x]);
}
int main(){
freopen("poj1611.in","r",stdin);
freopen("poj1611.out","w",stdout);
while(1){
scanf("%d%d",&n,&m);
ans=0;
if (n==0) break;
for (int i=0;i<n;++i) f[i]=i;
for (int i=1;i<=m;++i){
scanf("%d",&k);
scanf("%d",&s1);
for (int i=2;i<=k;++i){
scanf("%d",&s2);
tmp1=gf(s1);tmp2=gf(s2);
if (tmp1!=tmp2) f[gf(s1)]=tmp2;
}
}
ans++;
tmp1=gf(0);
for (int i=1;i<n;++i) if (gf(i)==tmp1) ans++;
printf("%d\n",ans);
}
return 0;
}