本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。

输入格式:

输入在第一行给出家族人口总数 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 分)相关推荐

  1. 【CCCC】L2-026 小字辈 (25分),求多叉树的深度和底层叶节点

    problem L2-026 小字辈 (25分) 本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起 ...

  2. 7-5 小字辈 (25 分)

    暑假字符串专题HBU程序设计训练营总结 ?点这里 7-5 小字辈 (25 分) 本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 0 ...

  3. 7-4 小字辈 (25 分) 详解

    7-4 小字辈 (25 分) 本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 ...

  4. 7-3 小字辈 (25分)

    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到 N 编号.随后第二行 ...

  5. 7-10 小字辈 (25分)

    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到 N 编号.随后第二行 ...

  6. 小字辈 (25 分)

    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到N编号.随后第二行给出 ...

  7. L2-026 小字辈 (25 分)(深搜详解)

    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) -- 简单起见,我们把家族成员从 1 到 N 编号.随后第二行 ...

  8. L2-2 小字辈 (25 分)

    题目链接 深搜过程中记录最小辈分和最小成员编号 #include <algorithm> #include <bitset> #include <cmath> #i ...

  9. 【CCCC】L2-022 重排链表 (25分),,链表遍历

    problem L2-022 重排链表 (25分) 给定一个单链表 L ​1 ​​ →L ​2 ​​ →⋯→L ​n−1 ​​ →L ​n ​​ ,请编写程序将链表重新排列为 L ​n ​​ →L ​ ...

  10. 【CCCC】L2-011 玩转二叉树 (25分),二叉树建树与遍历(我讨厌树,@L2-006)

    problem L2-011 玩转二叉树 (25分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设 ...

最新文章

  1. AutoComplete的字典建立和单词查找算法实现
  2. c语言switch设计计算器,求助。。关于用switch编写简易计算器
  3. 【leetcode】937. Reorder Log Files
  4. matlab 计算程序运行的时间
  5. 详解iBaits中SqlMapClientTemplate的使用
  6. 同源策略_如何支持跨域
  7. sql 查询结果自定义排序
  8. 冲锋衣和羽绒服哪个保暖?
  9. linux静态网络带宽分配策略,Xen网络带宽分配优化方案的设计与实现
  10. kvaser canking 的使用
  11. 关于Layout Constraint的动态update方式
  12. 基于Rook+Ceph的云原生存储架构剖析
  13. 简体和繁体之间的转换
  14. 记一次挖矿病毒应急处置全过程挖矿处置基本操作
  15. 《A CMOS Time-to-Digital Converter With BetterThan 10ps Single-Shot Precision》论文阅读
  16. win10系统的计算机C盘在哪,win10系统只有一个C盘怎么解决
  17. 精选(26)面试官:讲讲你对ThreadLocal的理解
  18. Borax.Lunardate:中国农历日期
  19. 【编程语言】Scala 函数式编程
  20. 用JAVA实现简单的WORD转PDF 亲测有效

热门文章

  1. 动态爱心(C/C++)
  2. 手机怎么用外嵌字幕_教你用手机给视频添加字幕,超简单,3分钟就能学会
  3. uploadify上传插件完整Demo(包括后台)
  4. MAC快捷键使用大全
  5. python强度公式计算_python – 黑体谱的普朗克斯公式
  6. b2c京东流程图_京东商城网上交易流程分析
  7. c语言火车票退票系统流程图,[图解12306退票流程与步骤]
  8. 速达数据库服务器密码修改,速达,管家婆SQL Server帐套密码PJ方法 -电脑资料
  9. [渝粤教育] 深圳职业技术学院 安全教育与应急处理训练 参考 资料
  10. 报表工具对比评论汇总,选型看这一篇就够了---------报表工具对比软文最全的收集汇总帖子