#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
using namespace std;
int bin[30050],a[550];
int find(int x)
{
if(bin[x]==x)
return x;
else
return (bin[x]=find(bin[x]));
}
void f(int a,int b)//a>b
{
int fa,fb;
fa=find(a);
fb=find(b);
if(fa!=fb)//这里若是这样写,判断条件该是!=find(0),而不能是0!!!!!!
bin[fa]=fb;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF&&(n!=0||m!=0))
{
for(int i=0; i<n; i++)
bin[i]=i;
while(m--)
{
int len;
scanf("%d",&len);
for(int i=0; i<len; i++)
scanf("%d",&a[i]);
sort(a,a+len);
for(int i=0; i<len-1; i++)
f(a[i+1],a[i]);
}
int count=0;
for(int i=0; i<n; i++)
if(find(i)==find(0))
count++;
printf("%d\n",count);
}
return 0;
}
并查集_感染者
最新推荐文章于 2022-04-23 13:39:09 发布