PAT 1094 The Largest Generation[bfs][一般]
1094 The Largest Generation(25 分)
A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level belong to the same generation. Your task is to find the generation with the largest population.
Input Specification:
Each input file contains one test case. Each case starts with two positive integers N (<100) which is the total number of family members in the tree (and hence assume that all the members are numbered from 01 to N), and M (<N) which is the number of family members who have children. Then M lines follow, each contains the information of a family member in the following format:
ID K ID[1] ID[2] ... ID[K]
where ID
is a two-digit number representing a family member, K
(>0) is the number of his/her children, followed by a sequence of two-digit ID
's of his/her children. For the sake of simplicity, let us fix the root ID
to be 01
. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print in one line the largest population number and the level of the corresponding generation. It is assumed that such a generation is unique, and the root level is defined to be 1.
Sample Input:
23 13
21 1 23
01 4 03 02 04 05
03 3 06 07 08
06 2 12 13
13 1 21
08 2 15 16
02 2 09 10
11 2 19 20
17 1 22
05 1 11
07 1 14
09 1 17
10 1 18
Sample Output:
9 4
题目大意:求树的具有最多节点的层数, 并输出是第几层。
这是我写的。
#include <iostream>
#include <vector>
#include <map>
#include<stdio.h>
#include<cmath>
#include<queue>
using namespace std;
vector<int> tree[];
map<int,int> mp;
int main() {
int n,m;
queue<int> que;
scanf("%d %d",&n,&m);
int id,k,temp;
for(int i=;i<m;i++){
scanf("%d %d",&id,&k);
for(int j=;j<k;j++){
scanf("%d",&temp);
tree[id].push_back(temp);
}
}
que.push();
que.push(-);
mp[]=;
int level=;
while(!que.empty()){
int top=que.front();que.pop();
while(top!=-){
for(int i=;i<tree[top].size();i++){
mp[level]++;
que.push(tree[top][i]);
}
top=que.front();que.pop();
}
//是不是得两层while,每次写这个地方都有疑惑的。
if(!que.empty()){
level++;que.push(-);
}
}
int maxs=;
id=;
for(int i=;i<=level;i++){
if(mp[i]>maxs){
maxs=mp[i];
id=i;
}
}
printf("%d %d",maxs,id); return ;
}
//用-1作为标记,双层while循环进行遍历。
下列代码均来自:https://www.liuchuo.net/archives/2223
#include <cstdio>
#include <vector>
using namespace std;
vector<int> v[];
int book[];
void dfs(int index, int level) {
//传参是本节点下标和节点所在层数!
book[level]++;
for(int i = ; i < v[index].size(); i++)
dfs(v[index][i], level+);
}
int main() {
int n, m, a, k, c;
scanf("%d %d", &n, &m);
for(int i = ; i < m; i++) {
scanf("%d %d",&a, &k);
for(int j = ; j < k; j++) {
scanf("%d", &c);
v[a].push_back(c);
}
}
dfs(, );
int maxnum = , maxlevel = ;
for(int i = ; i < ; i++) {
if(book[i] > maxnum) {
maxnum = book[i];
maxlevel = i;
}
}
printf("%d %d", maxnum, maxlevel);
return ;
}
//没看到代码之前我都不知道还可以用dfs写。以为只可以用bfs,学习了!
PAT 1094 The Largest Generation[bfs][一般]的更多相关文章
- PAT 1094. The Largest Generation(BFS)
CODE: #include<cstdio> #include<cstring> #include<queue> using namespace std; bool ...
- PAT 1094. The Largest Generation (层级遍历)
A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level bel ...
- PAT甲级——1094 The Largest Generation (树的遍历)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/93311728 1094 The Largest Generati ...
- 1094 The Largest Generation ——PAT甲级真题
1094 The Largest Generation A family hierarchy is usually presented by a pedigree tree where all the ...
- PTA甲级1094 The Largest Generation (25分)
PTA甲级1094 The Largest Generation (25分) A family hierarchy is usually presented by a pedigree tree wh ...
- PAT (Advanced Level) Practise - 1094. The Largest Generation (25)
http://www.patest.cn/contests/pat-a-practise/1094 A family hierarchy is usually presented by a pedig ...
- PAT Advanced 1094 The Largest Generation (25) [BFS,DFS,树的遍历]
题目 A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level ...
- PAT A1094 The Largest Generation (25 分)——树的bfs遍历
A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level bel ...
- PAT 甲级 1094 The Largest Generation
https://pintia.cn/problem-sets/994805342720868352/problems/994805372601090048 A family hierarchy is ...
随机推荐
- linux vi编辑器中,如何通过快捷键上下翻页?
需求说明: 之前在vi的时候,如果想看下一页,就直接按住 ↓ 这个箭头一直翻,现在觉得有些麻烦, 就找了下上,下翻页的快捷方式.在此记录下. 记录: 1.向下翻页快捷键(下一页):Ctrl + f 2 ...
- NYOJ467 中缀式变后缀式 【栈】
中缀式变后缀式 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更"习惯于"后缀式.关于算术 ...
- day15<集合框架>
集合框架(对象数组的概述和使用) 集合框架(集合的由来及集合继承体系图) 集合框架(Collection集合的基本功能测试) 集合框架(集合的遍历之集合转数组遍历) 集合框架(Collection集合 ...
- HDOJ 4276 The Ghost Blows Light
题意 1. 给定一棵树, 树上节点有 value, 节点之间 travel 有 cost. 给定起始节点和最大 cost, 求解最大 value 思路 1. 寻找最短路径 a. 题目描述中有两句话, ...
- js md5类(支持中文)
国外网站扒的一个js类,这个东西挺难找的,之前找的都是一有中文的加密不正确,这个类解决这个问题了!!! 注:使用的时候,使用 hex_md5 函数 代码如下: /** * Namespace for ...
- VMware克隆虚拟机后网络不能正常使用的解决方法
1.问题情况 在vmware中克隆一个虚拟机后,新的虚拟机网络无法使用,并用原操作系统中的网卡eth0在克隆出来的新系统中,网卡号变成了eth1,并且IP地址也丢失了,网络不可正常使用. 2.环境情况 ...
- phpsession配置
1. 介绍 1.1 作用: 主要用于服务器端的会话保持. 1.2 结构: Session分以下几部分: 1)Session id 用户Session的唯一标识(随机生成,具有唯一性,随机性) 2)Se ...
- 如何偷懒地用 PHP 搭建一个班级网站
版权声明:本文由李宜东原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/116 来源:腾云阁 https://www.qclo ...
- WCF(四) 绑定
绑定 是一个制定好的通道栈,包含了协议通道,传输通道和编码器.从功能上来看,一个绑定集成了通信模式.可靠性.安全性.事务传播和互操作性 绑定方式分两种:代码中和配置文件中绑定 1: 2: 3.配置ap ...
- ionic+cordova开发!
这里是一些学习的过程中纪录的: 官方网站: http://www.ionic-china.com/ 参考文章: https://blog.csdn.net/xyzz609/article/detail ...