L2-2 小字辈PTA

2023-11-01

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

输入格式:

输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。

输出格式:

首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。

输入样例:

9
2 6 5 5 -1 5 6 4 7

输出样例:

4
1 9

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

 两种方法:

1. DFS

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,start,res,a[N],t;
vector<int>e[N];
void DFS(int x,int deep){
	if(res=max(res,deep));
	a[x]=deep;
	for(int i=0;i<e[x].size();i++){
		DFS(e[x][i],deep+1);
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>t;
		if(t==-1){
			e[0].push_back(i);
		}
		else e[t].push_back(i);
	}
	DFS(0,0);
	cout<<res<<endl;
	int flag=1;
	for(int i=1;i<=n;i++){
		if(a[i]==res){
			if(flag) flag=0;
			else cout<<" ";
			cout<<i;
		}
	}
	return 0;
}

2. 记忆化搜索

#include<bits/stdc++.h>
using namespace std;
int n,s[100010],ans,p[100010];
int check(int x){
	if(s[x]==-1) return p[x]=1;
	if(p[x]==0) return p[x]=check(s[x])+1;
	else return p[x];
}
int main(){
	int flag=1;
	cin>>n;
	for(int i=1;i<=n;i++) 
		cin>>s[i]; 
	for(int i=1;i<=n;i++)
		ans=max(ans,check(i));
	cout<<ans<<endl;
	for(int i=1;i<=n;i++){
		if(p[i]==ans){
			if(flag==1) flag=0;
			else printf(" ");
			printf("%d",i);
		}
	}
	return 0;
} 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

L2-2 小字辈PTA 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 【C++】教你如何在中秋节给家人们画一个星空

    前言 将至中秋 想必大家都想给自己的家人们一个惊喜吧 今天就手把手地教大家如何用C 和Easyx画一个星空 效果图 一 准备Easyx 首先我们要前往Easyx官网下载安装程序 下载完成后打开程序 并点击 下一步 随后选择你的编辑器并点击
  • 全网都在找的GPT最权威的160条指令讲解

    看到有人发布了 全网都在找的GPT最权威的160条指令 实际上并不需要记住那么多指令 也没有必要记住160条Prompt 与ChatGPT进行交互最重要的是掌握Prompt的基本结构或模板 而不是记住所有的Prompt 一 基础用法 直接输
  • vue3子组件给父组件传参

    子组件传参 const emit defineEmits 自定义事件名字A 给父组件传参 emit 自定义事件名字A 数据 父组件接收参数 lt 子组件标签名 自定义事件名字A getRecentRecoding gt 父组件接收数据 fu
  • 【测试】软件测试的生命周期

    目录 1 软件测试的生命周期 2 如何描述一个bug 3 如何定义bug的级别 4 bug的生命周期 5 如何开始第一次测试 6 测试的执行和BUG管理 6 1 开始进行测试 6 2 BUG管理 1 软件测试的生命周期 软件测试的生命周期
  • linux系统下默认目录,linux系统默认的目录意思

    linux系统默认的目录意思 bin bin是binary的缩写 这个目录是对UNIX系统习惯的沿袭 存放着使用者最经常使用的命令 例如 cp ls cat boot 这里存放的是启动LINUX时使用的一些核心文件 dev dev是devi
  • DDPM模型——公式推导

    论文传送门 Denoising Diffusion Probabilistic Models 代码实现 DDPM模型 pytorch实现 推荐视频 54 Probabilistic Diffusion Model概率扩散模型理论与完整PyT
  • mmseg 安装

    mmseg 安装 文章目录 mmseg 安装 docker sh 基本mmcv mmseg等安装 Bugs ImportError libGL so 1 cannot open shared object file No such file
  • 简单聊一聊手机端口的识别协议-BC1.2

    关于BC1 2协议 每一个从事手机硬件设计的工程师都应该非常了解熟悉 其主要是为了充电端口的识别 然而关于这部分协议 网上有很多的讲解 有讲的很仔细的 也有讲的很粗糙的 小编也是为了学习这部分协议 翻阅了很多资料 最终决定将自己学到的结合自
  • [工业互联-21]:常见EtherCAT主站方案:Kithara实时套件

    第1章 Kithara实时套件概述 1 1 概述 Kithara Software是一家德国的软件公司 专注于实时技术和嵌入式解决方案 他们为Windows操作系统提供了Kithara RealTime Suite 这是一套实时扩展模块 使
  • linux vim 怎么查找,linux下vim 查找命令

    linux下vim 查找命令 text 查找text 按n查找下一个 N查找上一个 text 查找text 反向查找 按n查找下一个 N查找上一个 查找光标当前的单词 相当于 text set ignorecase 查找忽略大小写 set
  • 消息中间件 RocketMQ 源码解析:Message 发送&接收

    摘要 原创出处 http www iocoder cn RocketMQ message send and receive 芋道源码 欢迎转载 保留摘要 谢谢 本文主要基于 RocketMQ 4 0 x 正式版 1 概述 2 Produce
  • 如何选择适合自己的国内服务器

    企业和公司需要服务器一般情况下都是放公司数据 挂公司网站 对服务器的要求是稳定 顺畅 速度快 安全 那么国内那么多机房和服务商 怎么选择最好的呢 如何保证服务器商提供优质的服务器 第一 服务器供应商是不是正规的 第二 看机房的级别 确定ID
  • 页面中常遇到的BUG,及解决方法

    1 解决图片底下三像素的间距 hack1 给img设置vertical align top hack2 给img设置display block 2 谷歌浏览器表单元素在点击时会有外边线 google hack1 input textarea
  • Shell中脚本变量和函数变量的作用域

    Shell中脚本变量和函数变量的作用域 在shell中定义函数可以使代码模块化 便于复用代码 不过脚本本身的变量和函数 的变量的作用域问题可能令你费解 在这里梳理一下这个问题 1 Shell脚本中定义的变量是global的 其作用域从被定义
  • jni和java之间字符串的转换

    jni和java之间字符串的转换方法 C的实现 JNIEXPORT jstring JNICALL Java Android123 CwjC JNIEnv env jobject obj jstring string char szBuff
  • Android毕业设计,基于Android 语音朗读书籍管理系统

    视频演示 基于Android 语音朗读书籍管理系统 基于 Android 的语音朗读书籍管理系统可以提供用户管理书籍 朗读书籍的功能 以下是一个简单的步骤和功能列表 用户注册和登录功能 用户可以注册新账号或使用现有账号登录系统 用户信息可以
  • Android自定义权限使用方法

    Android应用程序可以自定义属于自己的权限或者属于开发者使用的同一个签名的权限 自定义权限的步骤如下 一 在AndroidManifest文件中 添加一个permission标签
  • 【UE4】实现自定义框选

    要在UE4中实现自定义框选功能 首先我们来分析一下顶顶一框选插件需要些什么模块 绘制模块 显示模块 计算模块 嗯 大概分这么三个模块 好 现在我们一个个模块来分析实现 首先分析实现一下显示模块 提示 如果功能需要打包成插件 请先浏览第四章
  • Numpy.pad的多维矩阵里的参数通俗解析 np.pad(a, ((x1, y1), (x2, y2), (x3, y3)), 'constant')

    最近看到pad函数 很多参考资料对pad函数在三维矩阵应用时 对于里面的参数解释不明白 于是自己总结一下 a np array 1 2 2 3 2 4 5 6 7 8 9 10 定义这么个三维矩阵 使用pad方法 np pad a x1 y
  • L2-2 小字辈PTA

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