PAT (Advanced Level) Practise
来源:互联网 发布:咖啡入门 知乎 编辑:程序博客网 时间:2024/04/30 15:59
1004. Counting Leaves (30)
Input
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.
Output
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 Input2 101 1 02Sample Output
0 1
题意:
给你一棵树,让你求出每层中有几个节点没有子节点。
我没有用DFS来做,我直接模拟了。
#include <iostream>#include <algorithm>#include <stdio.h>#include <string.h>#include <math.h>#include <map>using namespace std;#define LL long longconst int maxn = 111;const int inf = 0x3f3f3f3f;int mp[maxn][maxn];int flag[maxn];int cnt=0;int main(){ int n,m; memset(flag,-1,sizeof flag); scanf("%d %d",&n,&m); for(int i=1;i<=m;i++){ int fa,k,son; scanf("%d %d",&fa,&k); for(int i=1;i<=k;i++){ scanf("%d",&son); mp[fa][son]=1; flag[fa]=1; if(flag[son]==-1){ flag[son]=0; } } } int num[maxn]; num[++cnt]=1; int fnum[maxn]; int pp[maxn]; int pcnt=0; int *r=num,*p=fnum; while(cnt!=0){ int fcnt=0; int ans=0; for(int i=1;i<=cnt;i++){ int m=1; int u=r[i]; for(int j=1;j<=99;j++){ if(mp[u][j]){ p[++fcnt]=j; m=0; } } if(m==1) ans++; } cnt=fcnt; swap(r, p); pp[++pcnt]=ans; } for(int i=1;i<=pcnt;i++){ if(i-1) printf(" "); printf("%d",pp[i]); } printf("\n");}
- [PAT] (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1005
- pat (advanced level ) Practise 1065
- PAT (Advanced Level) Practise 1070
- PAT (Advanced Level) Practise 1035
- PAT (Advanced Level) Practise 1031
- PAT (Advanced Level) Practise 1015
- PAT (Advanced Level) Practise 1120
- PAT (Advanced Level) Practise 1036
- 欢迎使用CSDN-markdown编辑器
- 待学习问题
- 【总结】C语言总结!!!
- spring框架学习之路(一)-入门基础(2)-动态代理和AOP(面向切面编程)
- keytool生成ssl证书
- PAT (Advanced Level) Practise
- 2017年11月3日 第二十五次总结
- 【总结】C++总结!!!
- Tomcat7.0.42源码研读之组件说明(四)
- JAVA设计模式之单例模式
- python the method of super function
- C语言中#、##和do{}while(0)的高效用法
- Vue.JS实战:简单的购物车
- PAT (Advanced Level) Practise