解答
#include<cstdio>
int fa[30005];
int find(int x) {
if (fa[x] != x) {
fa[x] = find(fa[x]);
}
return fa[x];
}
void init(int n) {
for (int i = 0; i < n; i++) {
fa[i] = i;
}
}
void ra(int x, int y) {
int X = find(x);
int Y = find(y);
if (X != Y) {
fa[Y] = X;
}
}
int main() {
int m, n;
while (~scanf("%d%d", &n, &m)) {
if (n == 0 && m == 0) {
break;
}
init(n);
for (int i = 1; i <= m; i++) {
int k, t, s;
scanf("%d", &k);
if (k > 0) {
scanf("%d", &t);
}
for (int j= 1; j< k; j++) {
scanf("%d", &s);
ra(t, s);
}
}
int count = 0;
for (int i = 0; i <n; i++) {
if (find(i) == find(0)) {
count++;
}
}
printf("%d\n", count);
}
return 0;
}