#include<stdio.h>
#include<string.h>
int pre[30000],num[30000],a[30000];
int find(int x)
{
int r = x;
while(r != pre[r])
r = pre[r];
int i = x,j;
while(i != r)
{
j = pre[i];
pre[i] = r;
i = j;
}
return r;
}
void join(int a,int b)
{
int r_a = find(a);
int r_b = find(b);
if(r_a != r_b)
{
pre[r_a] = r_b;
num[r_b] += num[r_a];
}
}
int main()
{
int n,m,k;
while(~scanf("%d%d",&n,&m))
{
memset(pre,0,sizeof(pre));
memset(num,0,sizeof(num));
if(m == 0 && n == 0)
break;
for(int i = 0;i < n;i++)
{
pre[i] = i;
num[i] = 1;
}
while(m--)
{
int k;
scanf("%d",&k);
scanf("%d",&a[0]);
for(int i = 1;i < k;i++)
{
scanf("%d",&a[i]);
join(a[i-1],a[i]);
}
}
printf("%d\n",num[find(0)]);
}
return 0;
}
poj 1611 The Suspects
猜你喜欢
转载自blog.csdn.net/feynmanz/article/details/80273472
今日推荐
周排行