poj1611 The Suspects
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
int parent[30010];
int total[30010];
using namespace std;
int getparent(int s)
{
if(parent[s]==s)
{
return s;
}
return parent[s]=getparent(parent[s]);
}
void Merge(int a,int b)
{
int m,n;
m=getparent(a);
n=getparent(b);
if(m==n)
{
return;
}
total[m]+=total[n];
parent[n]=m;
}
int main()
{
int n,m;
while(scanf("%d %d",&n,&m),n||m)
{
int i,j;
for(i=0;i<n;i++)
{
parent[i]=i;
total[i]=1;
}
int temp,h;
int k;
for(i=0;i<m;i++)
{
scanf("%d",&k);
scanf("%d",&temp);
for(j=1;j<k;j++)
{
scanf("%d",&h);
Merge(temp,h);
}
}
printf("%d\n",total[getparent(0)]);
}
return 0;
}
//400K 16MS