题意:给定家族树,求哪一层人数最多,人数为多少
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;
}