CFCF2171F.Rae Taylor and Trees (hard version)

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

“竟然有平民敢想和我坐在一起。要认清你的身份!”

—— Claire François

这是该问题的困难版本。困难版与简单版的区别在于,困难版要求你构造一个满足条件的树。

作为大地魔法师,Rae 精通种植树木的魔法!但 Manaria 吹嘘自己能种出更稀有的树。Rae 记得,最罕见的树可以用一个特定的排列来生成,请你帮她构造出来!

给定一个长度为 nn 的排列 pp

请判断是否存在一棵有 nn 个结点(编号为 1,2,,n1,2,\dots,n)的无向树,满足如下条件:

  • 对于所有直接相连的一对结点 uuvv1u<vn1 \leq u < v \leq n),uu 必须在排列 pp 中出现在 vv 前面。

如果存在,构造出任意一棵符合条件的树。

^*一个长度为 nn 的排列是一个恰好包含 11nn 每个整数各一次的序列,顺序任意。

输入格式

第一行输入一个整数 tt1t1041 \leq t \leq 10^4),表示测试用例组数。

每个测试用例第一行输入一个整数 nn2n2×1052 \leq n \leq 2 \times 10^5)。

第二行输入 nn 个整数 p1,p2,,pnp_1,p_2,\dots,p_n1pin1 \leq p_i \leq n)。保证所有 pip_i 两两不同。

保证所有测试用例中 nn 的总和不超过 2×1052\times 10^5

输出格式

对于每个测试用例,如果存在满足条件的树,输出一行 “Yes”,否则输出 “No”。

如果答案是 “Yes”,接下来输出 n1n-1 行,每行两个整数 u vu\ v,表示树中的一条边连接了 uuvv

你可以用任意大写或小写方式输出答案单词。例如 "Yes", "yEs", "YES", "YeS" 均可被识别。

输入输出样例

  • 输入#1

    9
    6
    1 3 4 5 2 6
    4
    3 4 1 2
    5
    4 3 5 1 2
    4
    1 2 3 4
    7
    4 3 5 7 6 2 1
    6
    2 4 6 1 3 5
    3
    2 1 3
    4
    2 4 1 3
    6
    4 2 6 5 1 3

    输出#1

    Yes
    3 1
    4 1
    6 5
    6 2
    6 1
    No
    No
    Yes
    2 1
    4 3
    4 1
    No
    Yes
    4 2
    6 2
    3 1
    5 1
    5 2
    Yes
    3 2
    3 1
    Yes
    4 2
    3 1
    3 2
    Yes
    6 4
    6 2
    3 1
    5 4
    2 3

说明/提示

在第一个样例中,可以构造输出所给的树:

  • 1<31<3,且 11pp 中比 33 先出现,
  • 1<41<4,且 11pp 中比 44 先出现,
  • 5<65<6,且 55pp 中比 66 先出现,
  • 2<62<6,且 22pp 中比 66 先出现,
  • 1<61<6,且 11pp 中比 66 先出现。

在第二个样例中,可以证明不存在满足约束条件的树。

首页