1.树的搜索
2.寻找树的层数最多的节点数
#include <bits/stdc++.h>
using namespace std;
vector<vector<int > > tr;
int le_n[105];
int ans,level;
int n,m;
struct node{
int id;
int level;
};
void bfs(int x){
node root;
root.id = 1;
root.level = 1;
queue<node > q;
q.push(root);
while(!q.empty()){
node tp = q.front();
q.pop();
int id = tp.id;
int le = tp.level;
le_n[le]++;
for(int i=0;i<tr[id].size();i++){
tp.id = tr[id][i];
tp.level = le + 1;
q.push(tp);
}
}
}
int main()
{
scanf("%d%d",&n,&m);
tr.resize(n+1);
for(int i=0;i<m;i++){
int id,num,son;
scanf("%d%d",&id,&num);
tr[id].resize(num);
for(int j=0;j<num;j++){
scanf("%d",&son);
tr[id][j] = son;
}
}
bfs(1);
for(int i=1;i<=n;i++){
if(le_n[i]>ans){
ans = le_n[i];
level = i;
}
}
printf("%d %d",ans,level);
return 0;
}