AT_1_ttpc2024_1_g.Diverge and Converge

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

给定一棵有 NN 个顶点的树 AA。顶点的编号从 11 到 NN,其中第 ii 条边(1≤i≤N−11 \le i \le N-1)连接了顶点 uiu_i 和 viv_i。

同时,你还得到了一棵同样有 NN 个顶点的树 BB。树 BB 的顶点编号也是从 11 到 NN,其中第 jj 条边(1≤j≤N−11 \le j \le N-1)连接了顶点 xjx_j 和 yjy_j。

你的任务是找到一个排列对 ((P1,P2,…,PN−1),(Q1,Q2,…,QN−1))((P_1, P_2, \dots, P_{N-1}), (Q_1, Q_2, \dots, Q_{N-1})),使得以下条件成立:

对于每个 k=1,2,…,N−1k=1, 2, \dots, N-1,依次执行以下两步操作。在每个 kk 的两步操作执行完毕后,AA 和 BB 必须依然保持树的结构。

  1. 在树 AA 中,删除连接顶点 uPku_{P_k} 和 vPkv_{P_k} 的边,同时添加连接顶点 xQkx_{Q_k} 和 yQky_{Q_k} 的边。
  2. 在树 BB 中,删除连接顶点 xQkx_{Q_k} 和 yQky_{Q_k} 的边,同时添加连接顶点 uPku_{P_k} 和 vPkv_{P_k} 的边。

请注意,根据题目的限制条件,可以保证一定存在这样的排列对。

输入格式

输入从标准输入读取,格式如下:

N
u_1 v_1
u_2 v_2
...
u_{N-1} v_{N-1}
x_1 y_1
x_2 y_2
...
x_{N-1} y_{N-1}

输出格式

输出排列的结果,格式如下:

P_1 P_2 ... P_{N-1}
Q_1 Q_2 ... Q_{N-1}

输入输出样例

  • 输入#1

    4
    1 2
    2 3
    3 4
    1 2
    2 4
    2 3

    输出#1

    3 1 2
    2 1 3
  • 输入#2

    2
    1 2
    2 1

    输出#2

    1
    1
  • 输入#3

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

    输出#3

    1 2 3 4 5 6
    1 2 6 4 5 3

说明/提示

  • 2≤N≤10002 \le N \le 1000
  • 1≤ui,vi,xj,yj≤N1 \le u_i, v_i, x_j, y_j \le N
  • 给定的 AA 和 BB 保证是树

样例解释 1

在操作开始时,树 AA 是一条直线型的路径树,而树 BB 是星型树。当 k=1k=1 操作完成后,AA 变成星型树,而 BB 变成路径树。在 k=2k=2 操作中,删除和添加的边具有相同的顶点,因此树的形状并没有改变。到 k=3k=3 操作结束时,AA 和 BB 的结构已经成功互换。

本翻译由 AI 自动生成

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

首页