1004 Counting Leaves (30 分) 输出树每层的叶子节点数 ゝ一纸荒年。 2021-10-30 00:42 198阅读 0赞 A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. ### Input Specification: ### Each input file contains one test case. Each case starts with a line containing 0<N<100, the number of nodes in a tree, and M (<N), the number of non-leaf nodes. Then M lines follow, each in the format: ID K ID[1] ID[2] ... ID[K] where `ID` is a two-digit number representing a given non-leaf node, `K` is the number of its children, followed by a sequence of two-digit `ID`'s of its children. For the sake of simplicity, let us fix the root ID to be `01`. The input ends with N being 0. That case must NOT be processed. ### Output Specification: ### For each test case, you are supposed to count those family members who have no child **for every seniority level** starting from the root. The numbers must be printed in a line, separated by a space, and there must be no extra space at the end of each line. The sample case represents a tree with only 2 nodes, where `01` is the root and `02` is its only child. Hence on the root `01` level, there is `0` leaf node; and on the next level, there is `1` leaf node. Then we should output `0 1` in a line. ### Sample Input: ### 2 1 01 1 02 ### Sample Output: ### 0 1 题意:输出树每层的叶子节点数 一开始看题有01,02还以为要map映射,后来看了柳神的博客发现直接%d就可以了,瞬间简单了~ #include <stdio.h> #include <string.h> #include <string> #include <map> #include <vector> #include <queue> #include <math.h> #include <algorithm> #include <iostream> #define INF 0x3f3f3f3f using namespace std; vector<int> v[1005]; int l[1005],maxl; void dfs(int root,int level) { if(v[root].size()==0) { maxl=max(maxl,level); l[level]++; return; } for(int i=0;i<v[root].size();i++) dfs(v[root][i],level+1); } int main() { int n,m,i,j,id,k,x; scanf("%d%d",&n,&m); while(m--) { scanf("%d%d",&id,&k); for(i=0;i<k;i++) { scanf("%d",&x); v[id].push_back(x); } } memset(l,0,sizeof l); maxl=-1; dfs(1,0); for(i=0;i<=maxl;i++) { if(i)printf(" "); printf("%d",l[i]); } }
还没有评论,来说两句吧...