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][一般]的更多相关文章

  1. PAT 1094. The Largest Generation(BFS)

    CODE: #include<cstdio> #include<cstring> #include<queue> using namespace std; bool ...

  2. PAT 1094. The Largest Generation (层级遍历)

    A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level bel ...

  3. PAT甲级——1094 The Largest Generation (树的遍历)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/93311728 1094 The Largest Generati ...

  4. 1094 The Largest Generation ——PAT甲级真题

    1094 The Largest Generation A family hierarchy is usually presented by a pedigree tree where all the ...

  5. PTA甲级1094 The Largest Generation (25分)

    PTA甲级1094 The Largest Generation (25分) A family hierarchy is usually presented by a pedigree tree wh ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. PAT 甲级 1094 The Largest Generation

    https://pintia.cn/problem-sets/994805342720868352/problems/994805372601090048 A family hierarchy is ...

随机推荐

  1. Windows网络编程Internet Gopher了解下

    Gopher:中文译“地鼠”,是迪士尼卡通人物之一(谷佛). 英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议 该系统是在明尼苏达 ...

  2. ScrollView:ScrollView can host only one direct child异常

    java.lang.IllegalStateException: ScrollView can host only one direct child 原因是在外面有一个TextView控件,将其删除则 ...

  3. js md5类(支持中文)

    国外网站扒的一个js类,这个东西挺难找的,之前找的都是一有中文的加密不正确,这个类解决这个问题了!!! 注:使用的时候,使用 hex_md5 函数 代码如下: /** * Namespace for ...

  4. java中被遗忘的native关键字

    我是无意间看见JNI( java调用动态链接库dll )这块的东西. 所有记下来:本地声明方法  装载完成dll文件后,将使用的方法用native关键字声明. public native static ...

  5. 说说M451例程讲解之LED

    /**************************************************************************//** * @file main.c * @ve ...

  6. 在create-react-app的脚手架里面使用scss

    之前用vue-cli脚手架的时候,只需要引进sass需要的依赖包便可以引入scss,但是在create-react-app的时候,发现除了需要引入sass依赖,还需要进行配置: 不管用什么方法进行sa ...

  7. Intellij debug模式使用

    1.这里以一个web工程为例,点击图中按钮开始运行web工程. 2.设置断点 3.使用postman发送http请求 4.请求发送之后会自动跳到断点处,并且在断点之前会有数据结果显示 5.按F8 在 ...

  8. Docker 使用指南 (五)—— Dockerfile 详解

    版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/97 来源:腾云阁 https://www.qclou ...

  9. select标签的onchange事件

    /** @1.onchange事件 ==> select选择事件* @2.obj.options ==> 选择option集合* @3.obj.selectedIndex ==> 选 ...

  10. C# 生成PDF并下载。

    例子是生成一个pdf格式的证书: 需要引用itextsharp.dll //创建Document Document document = null; //为该Document创建一个Writer实例 ...