题目

题意:给定家族树,求哪一层人数最多,人数为多少
tip:层序遍历 

#include<iostream>
#include<queue>
using namespace std;
int main() {
	int n,m;
	cin>>n>>m;
	vector<vector<int>> s(n+1);
	for(int i=0; i<m; ++i) {
		int id,k;
		cin>>id>>k;
		for(int j=0; j<k; ++j) {
			int a;
			cin>>a;
			s[id].push_back(a);
		}
	}
	queue<int> ans;//每一层的人 
	ans.push(1);
	int  count=1,maxlen=1,maxgre=1;
	while(!ans.empty()) {
		queue<int>temp=ans;
		while(!ans.empty())
			ans.pop();
		while(!temp.empty()) {//下一层的人 
			int t=temp.front();
			temp.pop();
			for(int i=0; i<s[t].size(); ++i)
				ans.push(s[t][i]);
		}
		count++;
		if(maxlen<ans.size()) {
			maxlen=ans.size();//当前层人数更新 
			maxgre=count;//成熟更新 
		}
	}
	cout<<maxlen<<" "<<maxgre;
	return 0;
}