这个题目,思路都是自己在想,但是遇到自己表达输入部分和调用函数就开始懵逼了,然后我就参考了一下大神的代码,然后测试出了问题,试着提交了一下,runtime error;赶脚打开了新错误的大门
#include <iostream>
using namespace std;
int father[50000],a[50000];
int find(int x)
{
if(father[x] == x)
return x;
else
return father[x] = find(father[x]);
}
void Union(int x,int y)
{
int rx,ry;
rx = find(x);
ry = find(y);
father[rx] = ry;
}
int main()
{
int m,n,i;
while(cin >> n >> m && (m||n))
{
for(i = 0;i<n;i++)
father[i] = i;
while(m--)
{
int num;
cin >> num;
for(i = 0;i<num;i++)
cin >> a[i];
for(i = 1;i<num;i++)
Union(a[i-1],a[i]);
}
int cnt = 0;
for(i = 0;i<n;i++)
{
if(find(i) == find(0))
cnt++;
}
cout << cnt << endl;
}
return 0;
}