AT_utpc2021_n.Tree Swapping

通过率:0%

AC君温馨提醒

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

题目描述

给定一个包含 NN 个顶点的树,其边由序列 E=((X1,Y1),…,(XN−1,YN−1))E = \left((X_1, Y_1), \ldots, (X_{N-1}, Y_{N-1})\right) 表示。通过以下步骤,我们可以生成一个排列 f(E)f(E):

  1. 开始时,准备一个自然顺序排列 Q=(1,2,…,N)Q = (1, 2, \ldots, N)。
  2. 按顺序对 i=1,2,…,N−1i = 1, 2, \ldots, N-1,交换排列 QQ 的第 XiX_i 个元素和第 YiY_i 个元素。
  3. 经过上述所有交换后,最终的排列 QQ 即为 f(E)f(E)。

现在,给你一个长度为 NN 的排列 PP 和 MM 条边 (Ai,Bi)(A_i, B_i)。你需要判断是否存在一个包含这 MM 条边的、可以构成一棵树的边序列 EE,能够满足 f(E)=Pf(E) = P。如果存在,请输出任意一个这样的边序列;如果不存在,则输出 No。

我们保证由 MM 条边组成的图不会含有自环或环路。

输入格式

输入数据以以下格式给出:

NN MM P1P_1 …\ldots PNP_N A1A_1 B1B_1 …\ldots AMA_M BMB_M

输出格式

如果没有符合条件的解,则输出一行 No。
如果有解,则首先输出一行 Yes,然后从第二行开始,逐行输出符合条件的边序列 (Ai,Bi)(A_i, B_i):

A1A_1 B1B_1 …\ldots AN−1A_{N-1} BN−1B_{N-1}

要求输出的边必须形成一棵树。如果有多个符合条件的解,则输出任意一个即可。

输入输出样例

  • 输入#1

    3 1
    2 3 1
    3 2

    输出#1

    Yes
    1 2
    2 3

说明/提示

  • 所有输入都是整数。
  • 1≤N≤2×1051 \le N \le 2 \times 10^5
  • 0≤M≤N−10 \le M \le N - 1
  • 1≤Pi≤N1 \le P_i \le N
  • PP 是 (1,…,N)(1, \ldots, N) 的一个排列。
  • 1≤Ai,Bi≤N1 \le A_i, B_i \le N
  • Ai≠BiA_i \neq B_i
  • 由 MM 条边组成的图不会有环和多重边。

注意事项

在样例中,排列变化示例为:(1,2,3)→(2,1,3)→(2,3,1)(1, 2, 3) \rightarrow (2, 1, 3) \rightarrow (2, 3, 1)。

本翻译由 AI 自动生成

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

首页