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

解题思路:这题就相当于一棵树,找最底层的结点,以及深度。。最先开始想到的就是从子节点(没有孩子)开始逐一遍历比较,最后提交的时候发现超时了。。。那就只能重新写了,从根节点(所谓的老祖宗)开始,然后进行搜索,用数组记录每个人的辈分,maxx记录最低辈分。。。

代码如下:

超时代码:从子节点开始

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1e5+5;
int a[maxn];
struct P{int x,y;//记录编号和辈分
}s[maxn];
int vis[maxn];
bool cmp(P a,P b)
{if(a.y==b.y)return a.x<b.x;return a.y>b.y;
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]!=-1)//标记有孩子的人vis[a[i]]=1;}int maxx=0;for(int i=1;i<=n;i++){s[i].x=i;s[i].y=1;if(vis[i]) continue;int f=a[i];while(f!=-1)//查找辈分{s[i].y++;f=a[f];}if(s[i].y>maxx)maxx=s[i].y;}//sort(s+1,s+n+1,cmp);printf("%d\n",maxx);int f=0;for(int i=1;i<=n;i++){if(s[i].y==maxx){if(f) printf(" ");printf("%d",s[i].x);f=1;}}printf("\n");return 0;
}

正确代码:从根节点开始

#include<stdio.h>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1e5+5;
vector<int>V[maxn];
int s[maxn];
int maxx=0;
void dfs(int ans)
{if(V[ans].empty()){maxx=max(maxx,s[ans]);return;}for(int i=0;i<V[ans].size();i++){s[V[ans][i]]=s[ans]+1;//当前人的辈分等于他父母亲的辈分再加1dfs(V[ans][i]);}
}
int main()
{int n,a;scanf("%d",&n);int ans=1;for(int i=1;i<=n;i++){s[i]=1;scanf("%d",&a);if(a!=-1)V[a].push_back(i);elseans=i;}dfs(ans);printf("%d\n",maxx);int f=0;for(int i=1;i<=n;i++){if(s[i]==maxx){printf(f ? " %d" : "%d",i);f=1;}}printf("\n");return 0;
}

L2-026 小字辈相关推荐

  1. 天体赛练习集 简要题解 - L2

    目录 001 - 紧急救援 002 - 链表去重 003 - 月饼 004 - 这是二叉搜索树吗? 005 - 集合相似度 006 - 树的遍历 007 - 家庭房产 008 - 最长对称子串 009 ...

  2. 【L2-026 小字辈】天梯赛L2系列详解

    天梯赛L2-026 小字辈 (25 分) 题目详情: 输入样例: 9 2 6 5 5 -1 5 6 4 7 输出样例: 4 1 9 思路: 这个题目当时写了一种递归的方法,但是递归的不好,测试数据太大 ...

  3. 团体程序设计天梯赛 L2 题目合集

    前言 发现自己还能再参加一次天梯赛,在高兴之余,决定把在赛前将所有的天梯赛真题过一遍,希望自己可以取得理想的成绩.目前 L1 的题目已经刷完,打算在赛前刷完 L2 的题目. 本来想 L2 的题目都写个 ...

  4. 【CCCC】PAT : 团体程序设计天梯赛-练习集 L2 答案,题解,附代码

    [CCCC]PAT : 团体程序设计天梯赛-练习集 L2 答案 鉴定完毕,全部水题 ヾ(•ω•`)o 知识点分类(32): 1.树锯结构(9):二叉树的存储,编号,遍历顺序转换,求深度,底层节点,从底 ...

  5. CCCC 天梯赛 PTA ZOJ 题目 L1 L2 L3

    PTA 天梯赛题目整理 L2 难点 **L2-001 紧急救援** **L2-002 链表去重** **L2-003 月饼** **L2-004 这是二叉搜索树吗** **L2-005 集合相似度** ...

  6. 团体程序设计天梯赛-L2组

    团体程序设计天梯赛-L2组 -------------------------------------------------------------------------------- 题目传送门 ...

  7. 团体程序设计天梯赛 -- 练习集 (L2合集)

    文章目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? (25 分) L2-005 集合相似度 (25 ...

  8. PTA L2 题目合集

    L2-001 紧急救援 (25 分) 题解链接 L2-002 链表去重 (25 分) #include<bits/stdc++.h> #define PIS pair <int, s ...

  9. 什么是L1/L2/L3 Cache?

    什么是L1/L2/L3 Cache? Cache Memory也被称为Cache,是存储器子系统的组成部分,存放着程序经常使用的指令和数据,这就是Cache的传统定义.从广义的角度上看,Cache是快 ...

  10. 智能驾驶L2发展策略

    智能驾驶L2发展策略 智能驾驶L2,以们通俗的定义是,以高级辅助驾驶的产品为主的各种巡航产品,包括定速巡航,自适应巡航ACC,预见性巡航,智能巡航等等. 车辆驾驶是集注意力高度集中,手把控方向盘和换挡 ...

最新文章

  1. JQuery实现表格行当复制
  2. C++语言之继承中的特点
  3. quit推不出mysql_cmd下使用mysql插入中文出现无法退出语句的情况!终极解决办法! 安装mysql详细教程。...
  4. python字典的用法_Python字典的用法详解(附示例)
  5. [转]自定义ASP.NET MVC Html辅助方法
  6. 文件操作-使用readline分行读取大文件
  7. Django从理论到实战(part47)--ListView类
  8. 从Jupyter Notebook到脚本
  9. sme是什么职位_学云计算能从事哪些岗位 未来职业发展是什么样
  10. 快来了解下Snappy Ubuntu是什么
  11. C# winForm utf8 gbk 相互转码小工具
  12. python语法简洁清晰、特色之一是强制用作为语句缩进_问道python之基础篇【一】 认识python...
  13. Mybatis学习笔记(完结)
  14. 软件测试系统主要包括哪几项内容,系统测试包含哪几部分?
  15. Kubernetes 安全容器技术 kata gvisor
  16. C++——Hook教程[1]:虚函数表(VMT)Hook
  17. matlab语法介绍——fft()、ifft()、fftshift()
  18. python画小狗代码_用Python画一只有点方的小狗狗——turtle库circle()函数实践
  19. mysql8修改密码之后无法登陆_解决MySQL8.0安装第一次登陆修改密码时出现的问题...
  20. SpringBoot---MongoDB的简单使用

热门文章

  1. InSAR基础:雷达回波信号的构成(什么是振幅?什么是相位?)
  2. 51单片机LED花样流水灯实验
  3. JavaScript阴沟里翻船之运算符优先级
  4. 如何利用qq群来推广网站 经验分享
  5. win7程序关闭后弹出 程序兼容性助手 这个程序可能安装不正确 如果此程序没有正确安装,处理方式...
  6. 不懂甘特图,你还怎么做项目进度管理
  7. RoboMaster机器人运行教程(一)
  8. 红米手机计算机软件,红米手机要怎么连接电脑
  9. 向量点积,叉积,向量点乘和余弦的关系推导
  10. IntelliJ IDEA overlays Maven