一、题目概述
BFS统计每层节点数,求拥有最多结点的层数。
二、代码
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
int main()
{
int N, M, last = 1, lev = 1, cnt = 0, v, max = 0, ans_lev;
scanf("%d %d", &N, &M);
vector<vector<int>> tree(N + 1);
queue<int> q;
for( int i = 0, K, id; i < M; ++i )
{
scanf("%d %d", &id, &K);
for( int j = 0, node; j < K; ++j )
{
scanf("%d", &node);
tree[id].push_back(node);
}
}
q.push(1);
while( q.size() )
{
v = q.front();
q.pop();
++cnt;
for( int i = 0; i < tree[v].size(); ++i )
q.push(tree[v][i]);
if( v == last )
{
if( cnt > max )
{
max = cnt;
ans_lev = lev;
}
cnt = 0;
++lev;
last = q.back();
}
}
printf("%d %d", max, ans_lev);
}