【GPLT】 2018年天梯赛全国总决赛 L2-2 小字辈(c++)
题目:

这一题并不是很难,属于常规的图论遍历题,这里我是用的bfs(dfs应该也可以,但明显bfs简单一些)。
本人写的时候写了很多没必要头文件,自己可以根据内容删去,必要的我会写上注释
如有错误,请指正。
知识点:bfs,邻接表,队列
代码如下(本人喜欢多换行,所以可能看起来比较长,但其实内容不多):
1 #include<iostream>//必要
2 #include<cstring>//必要
3 #include<cstdio>
4 #include<queue>//必要,也可以自己写个模拟队列
5 #include<algorithm>
6 #include<string>//必要
7 #include<map>
8 using namespace std;
9 const int N=1e7+10;
10 int e[N],ne[N],idx,h[N];//邻接表用
11 int n;
12 int d[N],b[N];
13 void add(int a,int b)
14 {
15 e[idx]=b,ne[idx]=h[a],h[a]=idx++;
16 }
17 void bfs(int root)
18 {
19 queue<int> q;//建个队列
20 q.push(root);//
21 while(q.size())
22 {
23 int t=q.front();//取出点
24 q.pop();
25 for(int i=h[t];i!=-1;i=ne[i])//存储的是下标
26 {
27 int j=e[i];
28 if(d[j]==0)//如果没有遍历过
29 {
30 d[j]=d[t]+1;//辈分加1
31 q.push(j);//放进队列
32 }
33 }
34 }
35 }
36 int main()
37 {
38 cin>>n;
39 int x;
40 int root;
41 memset(h,-1,sizeof h);//初始化表头
42 for(int i=1;i<=n;i++)
43 {
44 cin>>x;
45 if(x!=-1) add(x,i);//建立练习,注意是x,i不是i,x。因为x是父亲,应该是父亲走向儿子
46 else
47 {
48 root=i;//找到老祖宗(根结点)
49 d[root]=1;
50 }
51 }
52 bfs(root);
53 int ma=0;
54 for(int i=1;i<=n;i++)
55 {
56 ma=max(ma,d[i]);//寻找(数字)最大的辈分
57 }
58 cout<<ma<<endl;
59 int cnt=0;//下面的只是为了输出没什么实际内容,就是单纯的把最小辈分人的编号放在另外一个数组
60 for(int i=1;i<=n;i++)
61 {
62 if(d[i]==ma)
63 {
64 b[cnt++]=i;
65 }
66 }
67 for(int i=0;i<cnt;i++)
68 {
69 if(i!=cnt-1) cout<<b[i]<<" ";
70 else cout<<b[i]<<endl;//输出要求
71 }
72 return 0;
73 }
【GPLT】 2018年天梯赛全国总决赛 L2-2 小字辈(c++)的更多相关文章
- 2018年天梯赛LV2题目汇总小结
Ⅰ.L2-1 分而治之---邻接表 分而治之,各个击破是兵家常用的策略之一.在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破.为此参谋部提供了若干打击方案.本题 ...
- 2019天梯赛练习题(L2专项练习)
7-2 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序 ...
- 2019 gplt团体程序设计天梯赛总结
分很菜… 以后写题一定记得把题意理清楚了再开始写. 模拟题还是大坑,代码还是写得不够多,代码量一大就写bug. 补题 l1-8 估值一亿的AI核心代码 补题链接:https://pintia.cn/p ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- L1-049. 天梯赛座位分配
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 052-053
今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...
- 2018天梯赛第一次训练题解和ac代码
随着评讲的进行代码和题解会逐步放上来 2018天梯赛第一次训练 1001 : 进制转换 Time Limit(Common/Java):1000MS/10000MS Memory Limit: ...
- 2018天梯赛、蓝桥杯、(CCPC省赛、邀请赛、ICPC邀请赛)校内选拔赛反思总结!
才四月份,上半年的比赛就告一段落了.. 天梯赛混子,三十个人分最低,把队友拖到了国三,蓝桥杯省二滚粗,止步京城,旅游选拔赛成功选为替补二队,啊! 不过既然已经过去,我们说些乐观的一面,积累了大赛经验是 ...
- 第四届CCCC团体程序设计天梯赛 后记
一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...
随机推荐
- 不想业务被中断?快来解锁华为云RDS for MySQL新特性
摘要:新特性上线!华为云RDS for MySQL又添新技能,实力保障业务连续性. 本文分享自华为云社区<不想业务被中断?快来解锁华为云RDS for MySQL新特性>,作者:Gauss ...
- RPC框架 和 fegin原理
打个比方,你有一些想法,你把他们变成文字写在信纸上,这是http 你把这个信纸塞进信封,这个信封是tcp 你把这个信封写上地址交给邮局,这地址是IP 一层套一层 会话层,表示层,应用层归到一起 就是 ...
- 解释AOP模块 ?
AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性.这个模块将元数据编程引入Spring.
- 四种类型的数据节点 Znode?
1.PERSISTENT-持久节点 除非手动删除,否则节点一直存在于 Zookeeper 上 2.EPHEMERAL-临时节点 临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与 zoo ...
- HTML 5中的DataList是什么?
HTML 5中的DataList控件元素有助于提供自动完成功能的文本框,如下图所示. 下面是DataList控件功能的HTML代码: <input list="Country" ...
- css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”
一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...
- '\ddd'转义字符与八进制转换
所有的ASCII码都可以用"\"加数字(一般是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等, ...
- CSS:两端对齐原理(text-align:justify)
我是一个小白我是一个小白我是一个小白喷我吧,哈哈 写样式的是时候经常会碰到字体两端对齐的效果,一般就网上找端css样式复制下就结束了,没有考虑过原理是啥贴下代码 <head> <me ...
- html dom 转化成图片踩坑记(canvas toDataURL)
需求 在开发过程中遇到这么一个需求,h5页面需要将一个html dom转化成图片,便于用户保存. 面向百度搜索第三方得 html2canvas 和 dom-to-image 两者在写这篇笔记之前在gi ...
- java中接口到底是干什么的,怎么用,深入剖析
6.总结性深一层次综合剖析接口概念[新手可忽略不影响继续学习] 通过以上的学习, 我们知道,所有定义在接口中的常量都默认为public.static和final.所有定义在接口中的方法默认为publi ...