CF1053E.Euler tour

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Euler 是一只可爱的小松鼠。秋天来临时,他会为冬天储备一些粮食。有趣的是,Euler 喜欢以一种特殊的方式收集橡果。一棵树可以被描述为 nn 个橡果,通过 n−1n-1 根树枝连接,使得任意一对橡果之间恰好有一条路径。我们将橡果从 11 到 nn 编号。

松鼠会选择一个橡果(不一定是编号为 11 的)作为起点,并以一种称为“欧拉游走”(见提示)的方式访问橡果,每当他最后一次访问某个橡果时,就会收集它。

今天早上,Kate 观察了 Euler。她拿出一张纸,记录下了 Euler 路径上依次经过的橡果编号。不幸的是,在回家的路上下起了雨,部分数字变得无法辨认。现在女孩很难过,因为她需要向老师展示自己的观察结果。

“也许如果我能猜出缺失的数字,就能完成作业!”她这样想着。请你帮助她,恢复出任意一个可能的树的欧拉游走,或者告诉她她一定是记错了。

输入格式

第一行包含一个整数 nn(1≤n≤5×1051 \leq n \leq 5 \times 10^5),表示树中橡果的数量。

第二行包含 2n−12n-1 个整数 a1,a2,…,a2n−1a_1, a_2, \ldots, a_{2n-1}(0≤ai≤n0 \leq a_i \leq n),表示 Kate 记录下的树的欧拉游走。00 表示该位置的数字无法辨认,需要你来猜测。

输出格式

如果不存在满足条件的欧拉游走,第一行输出 "no"。

否则,第一行输出 "yes",第二行输出一个满足条件的欧拉游走。

只要输出的欧拉游走合法即可,因为老师并不知道最初的树是什么样子的。

输入输出样例

  • 输入#1

    2
    1 0 0
    

    输出#1

    yes
    1 2 1
    
  • 输入#2

    4
    1 0 3 2 0 0 0
    

    输出#2

    yes
    1 4 3 2 3 4 1
    
  • 输入#3

    5
    0 1 2 3 4 1 0 0 0
    

    输出#3

    no
    

说明/提示

一棵有 nn 个橡果的树的欧拉游走是一个长度为 2n−12n-1 的橡果编号序列,满足每个橡果至少出现一次,首尾橡果编号相同,且任意相邻的两个橡果编号在树中直接通过一根树枝连接。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页