PAT Counting Leaves[一般]
1004 Counting Leaves (30)(30 分)
A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.
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 levelstarting 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
参考这个:http://www.cnblogs.com/linkstar/p/5674895.html
#include <iostream>
#include <cstring>
#include <cstdio> using namespace std;
//给出节点总数和非叶节点数,并且给出非叶节点的子节点,输出每层有几个叶节点。
struct node{
int hir;
int father;
int son;
node(){
hir=;son=;father=;}
}node[];
int ceng[]; int main()
{
//首先我的问题是这个树怎么存的,用数组来存?
//关键是要表示出来层数信息。
int n,m;
//freopen("1.txt","r",stdin);
cin>>n>>m;
int id,k,idk;
node[].hir=;
for(int i=;i<m;i++){
cin>>id>>k;
node[id].son+=k;
for(int j=;j<k;j++){
cin>>idk;
node[idk].father=id;//层数+1
}
}
//接下来就是要判断每层上一共有多少个叶子节点了。
//有一个小小的疑问就是,是不是层数按序号输入的呢?还是说每次找第几层的都要把所有的给便利一下?
//需要注意的是有可能新输入的父节点等级并没有确定。
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(node[j].father==i)
//node[i].son++;
node[j].hir=node[i].hir+;//从第一个点也就是根节点开始遍历,那么肯定可以顺序确定。
}
} int maxs=;
for(int i=;i<=n;i++){
if(node[i].son==){
ceng[node[i].hir]++;
if(node[i].hir>maxs)
maxs=node[i].hir;
}
}
for(int i=;i<=maxs;i++){
cout<<ceng[i];
if(i!=maxs)cout<<" ";
}
return ;
}
//大意就是输入一个值表示树中节点总数,另一个数表示非叶节点总数,接下来就是输入树的层次结构。要求判断出每一层有多少个叶节点并且输出。
第一次提交0分,因为是我有中间输入忘了注释,和freopen没有注释掉。之后提交是19分,看完链接中的代码之后就发现是因为我没有考虑点输入的先后顺序,有可能父节点输入的时候它的等级并没有确定,所以就需要一个字段father来记录,最后再有一个两层循环(这个时间复杂度就上去了,不过由于题目数据比较小,所以可用)。先记录父子关系,再循环确定层次关系,最后用哈希数组判断每层的叶结点个数即可。总的来说还可以。
PAT Counting Leaves[一般]的更多相关文章
- PAT 解题报告 1004. Counting Leaves (30)
1004. Counting Leaves (30) A family hierarchy is usually presented by a pedigree tree. Your job is t ...
- PAT甲1004 Counting Leaves【dfs】
1004 Counting Leaves (30 分) A family hierarchy is usually presented by a pedigree tree. Your job is ...
- PAT 1004 Counting Leaves (30分)
1004 Counting Leaves (30分) A family hierarchy is usually presented by a pedigree tree. Your job is t ...
- PAT Advanced 1004 Counting Leaves
题目与翻译 1004 Counting Leaves 数树叶 (30分) A family hierarchy is usually presented by a pedigree tree. You ...
- 1004 Counting Leaves ——PAT甲级真题
1004 Counting Leaves A family hierarchy is usually presented by a pedigree tree. Your job is to coun ...
- PAT_A1004#Counting Leaves
Source: PAT A1004 Counting Leaves (30 分) Description: A family hierarchy is usually presented by a p ...
- 1004. Counting Leaves (30)
1004. Counting Leaves (30) A family hierarchy is usually presented by a pedigree tree. Your job is ...
- PAT1004:Counting Leaves
1004. Counting Leaves (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A fam ...
- PTA (Advanced Level) 1004 Counting Leaves
Counting Leaves A family hierarchy is usually presented by a pedigree tree. Your job is to count tho ...
随机推荐
- Find–atime –ctime –mtime的用法与区别总结
转自 周五有同事问起find命令中-mtime n.-mtime –n以及-mtime +n的用法区别,当时虽然记得这里n是n个24个小时的意思,也是对所有这几个属性详细的用法却一知半解,索性周末仔细 ...
- Ubuntu14.04安装CMake3.0.2
http://blog.csdn.net/wz3118103/article/details/39826397 .去网址下载http://www.cmake.org/download/ Platfor ...
- 原生js(一)
Element对象有以下重要属性: 1.style. a) Element的css样式 b) 可以通过elem.style.backgroundColor = "red"的形式才动 ...
- Elasticsearch学习之深入聚合分析三---案例实战
1. 统计指定品牌下每个颜色的销量 任何的聚合,都必须在搜索出来的结果数据中进行,搜索结果,就是聚合分析操作的scope GET /tvs/sales/_search { , "query& ...
- openstack-networking-neutron(二)---tun/tap
本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. 简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,Ope ...
- nginx fastcgi配置
1.1 nginx概述nginx简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/P ...
- OpenCV获取IP摄像头视频
从开源中国博客搬来,合并博客 实验室做一个智能小车的小项目,期间涉及到在PC端处理小车摄像头的视频.这里先用安卓手机代替一下进行试验.大致流程就是手机摄像头获取视频,开启一个IP摄像头服务软件,在局域 ...
- iOS学习笔记06—Category和Extension
iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inher ...
- express运行原理
一.express底层:http模块 Express框架建立在node.js内置的http模块上.http模块生成服务器的原始代码如下. var http = require("http&q ...
- wordpress---wp_query的使用方法
wp_query是一个wordpress用于复杂请求的的一个类,看到query懂开发的人就会反应这个是数据库查询的一个类,这个类可谓是非常有用的,可以帮助我们做很多复杂的查询. wp_query的使用 ...