这个题目,思路都是自己在想,但是遇到自己表达输入部分和调用函数就开始懵逼了,然后我就参考了一下大神的代码,然后测试出了问题,试着提交了一下,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; }