#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
const int maxen = 110;
using namespace std;
struct node
{
int layer;
vector<int> child;
}Node[maxen];
int n;
void BFS(int root);
int hashTable[maxen]={0};
int maxLayer=0; //记录最大的层次数
int main()
{
int m;
int id,num,temp;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&id,&num);
for(int j=0;j<num;j++)
{
scanf("%d",&temp);
Node[id].child.push_back(temp);
}
}
BFS(1);
for(int i=0;i<=maxLayer;i++)
{
printf("%d",hashTable[i]);
if(i != maxLayer)
printf(" ");
}
return 0;
}
void BFS(int root)
{
queue<int> q;
q.push(root);
Node[root].layer = 0;
while(!q.empty())
{
int front = q.front();
q.pop();
if(maxLayer<Node[front].layer)
maxLayer=Node[front].layer;
//记录没有孩子节点的同层次的节点数
if(Node[front].child.size()==0)
{
hashTable[Node[front].layer]++;
}
for(int i=0;i<Node[front].child.size();i++)
{
int child = Node[front].child[i];
Node[child].layer = Node[front].layer+1;
q.push(child);
}
}
}
1004 Counting Leaves (30 分)
最新推荐文章于 2023-10-06 16:26:06 发布