#include <stdio.h>
typedef struct node {
int first;
int next;
}node;
int main()
{
node tree[100];
int n, m,i,ChildNum,ID, ParentID,LeavesNum=0;
scanf("%d %d", &n, &m);
for (i = 0; i <= n; i++)
tree[i].first = -1;
for (i = 0; i < m;i++) {
scanf("%d %d", &ParentID,&ChildNum);
while (ChildNum--) {
scanf("%d", &ID);
tree[ID].next = tree[ParentID].first;
tree[ParentID].first = ID;
}
}
int Q[100], front = 0, rear = 0, first = 0, last = 1, cnt = 1,DeQ,level=0;
Q[rear++] = 1;
while (front != rear) {
DeQ = Q[front++];
first++;
if (tree[DeQ].first == -1)
LeavesNum++;
for (i = tree[DeQ].first; i != -1; i = tree[i].next) {
Q[rear++] = i;
cnt++;
}
if (first == last) {
last = cnt;
level++;
if(level!=1)
printf(" %d", LeavesNum);
else
printf("%d", LeavesNum);
LeavesNum = 0;
}
}
return 0;
}
1004. Counting Leaves
最新推荐文章于 2021-08-10 19:11:25 发布