/*
zoj1789
【题目大意】
SARS是传染病。
学生x是传染源,与学生x一组都是传染源。
n个学生(序号从0~n-1)分为m组,初始时,0学生是传染源,找出传染源的人数 。
*/
#include <stdio.h>
#define NUM 30001
int set[NUM];
int find(int x)
{
int r=x;
while(r!=set[r])
r=set[r];
return r;
}
void join(int a,int b)
{
int af=find(a);
int bf=find(b);
set[af]=bf;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF && !(n==0 && m==0))
{
int t,x,y;
for(int i=0;i<n;i++)
set[i]=i;
for(int i=0;i<m;++i)
{
scanf("%d",&t);
{
scanf("%d",&x);
for(int j=1;j<t;++j)
{
scanf("%d",&y);
join(x,y);
}
}
}
int count=0;
x=0;
while(x!=set[x])
{
x=set[x];
}
for(int i=0;i<n;i++)
{
y=i;
while(y!=set[y])
y=set[y];
if(x==y)
count++;
}
printf("%d\n",count);
}
}
zoj1789-简单并查集
最新推荐文章于 2022-04-08 23:20:41 发布