L2-026 小字辈 (25 分)
本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。
输入格式:
输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。
输出格式:
首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。
输入样例:
9
2 6 5 5 -1 5 6 4 7
输出样例:
4
1 9
原本看着题目就开始迷糊了,去看了大佬的答案看完一遍马上就会敲了,写的太简洁明了了
L2-026 小字辈-PAT团体程序设计天梯赛GPLT – 柳婼 の blog
#include<bits/stdc++.h>
using namespace std;struct node
{int id , level;
};
int n , m ;
vector<node> ans;
vector<int> vn[100005];
queue<node> q;
int maxlevel=INT_MIN;void bfs()
{q.push({0,0}); //不是祖先 由该点引入祖先 while(!q.empty()){node p=q.front();q.pop();int id=p.id , level = p.level;ans.push_back(p);if(level>maxlevel) maxlevel=level; //记录最大层数for(int i=0;i<vn[id].size();i++)q.push({vn[id][i],level+1}); //第一次vn[0][0]就是祖先,level为1 //后面每次就是接着的孩子,level加上1 类似于一颗二叉树}
}int main(){cin>>n;for(int i=1;i<=n;i++){int temp;cin>>temp;if(temp==-1) temp=0;vn[temp].push_back(i);}bfs();cout<<maxlevel<<endl;for(int i=0;i<ans.size();i++){if(ans[i].level==maxlevel){cout<<ans[i].id;if(i!=ans.size()-1) cout<<" ";}}return 0;
}
//bfs
//代码从https://www.liuchuo.net/archives/5107
看到一篇用dfs做的,也很好理解L2-026 小字辈(dfs遍历树)_️啊️的博客-CSDN博客
L2-026 小字辈 (25 分)相关推荐
- 【CCCC】L2-026 小字辈 (25分),求多叉树的深度和底层叶节点
problem L2-026 小字辈 (25分) 本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起 ...
- 7-5 小字辈 (25 分)
暑假字符串专题HBU程序设计训练营总结 ?点这里 7-5 小字辈 (25 分) 本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 0 ...
- 7-4 小字辈 (25 分) 详解
7-4 小字辈 (25 分) 本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 ...
- 7-3 小字辈 (25分)
本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到 N 编号.随后第二行 ...
- 7-10 小字辈 (25分)
本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到 N 编号.随后第二行 ...
- 小字辈 (25 分)
本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到N编号.随后第二行给出 ...
- L2-026 小字辈 (25 分)(深搜详解)
本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到 N 编号.随后第二行 ...
- L2-2 小字辈 (25 分)
题目链接 深搜过程中记录最小辈分和最小成员编号 #include <algorithm> #include <bitset> #include <cmath> #i ...
- 【CCCC】L2-022 重排链表 (25分),,链表遍历
problem L2-022 重排链表 (25分) 给定一个单链表 L 1 →L 2 →⋯→L n−1 →L n ,请编写程序将链表重新排列为 L n →L ...
- 【CCCC】L2-011 玩转二叉树 (25分),二叉树建树与遍历(我讨厌树,@L2-006)
problem L2-011 玩转二叉树 (25分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设 ...
最新文章
- AutoComplete的字典建立和单词查找算法实现
- c语言switch设计计算器,求助。。关于用switch编写简易计算器
- 【leetcode】937. Reorder Log Files
- matlab 计算程序运行的时间
- 详解iBaits中SqlMapClientTemplate的使用
- 同源策略_如何支持跨域
- sql 查询结果自定义排序
- 冲锋衣和羽绒服哪个保暖?
- linux静态网络带宽分配策略,Xen网络带宽分配优化方案的设计与实现
- kvaser canking 的使用
- 关于Layout Constraint的动态update方式
- 基于Rook+Ceph的云原生存储架构剖析
- 简体和繁体之间的转换
- 记一次挖矿病毒应急处置全过程挖矿处置基本操作
- 《A CMOS Time-to-Digital Converter With BetterThan 10ps Single-Shot Precision》论文阅读
- win10系统的计算机C盘在哪,win10系统只有一个C盘怎么解决
- 精选(26)面试官:讲讲你对ThreadLocal的理解
- Borax.Lunardate:中国农历日期
- 【编程语言】Scala 函数式编程
- 用JAVA实现简单的WORD转PDF 亲测有效
热门文章
- 动态爱心(C/C++)
- 手机怎么用外嵌字幕_教你用手机给视频添加字幕,超简单,3分钟就能学会
- uploadify上传插件完整Demo(包括后台)
- MAC快捷键使用大全
- python强度公式计算_python – 黑体谱的普朗克斯公式
- b2c京东流程图_京东商城网上交易流程分析
- c语言火车票退票系统流程图,[图解12306退票流程与步骤]
- 速达数据库服务器密码修改,速达,管家婆SQL Server帐套密码PJ方法 -电脑资料
- [渝粤教育] 深圳职业技术学院 安全教育与应急处理训练 参考 资料
- 报表工具对比评论汇总,选型看这一篇就够了---------报表工具对比软文最全的收集汇总帖子