#P8949. [YsOI2022] 淀粉树

    ID: 9932 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 显示难度NOI/NOI+/CTS 上传者: 标签>点分治洛谷原创Special Judge构造

[YsOI2022] 淀粉树

背景

Ysuperman 教大家淀粉质和淀粉树。

题目描述

Ysuperman 定义一棵有根树 SS 是树 TT 的一棵淀粉树当且仅当 SS 满足如下两个条件(记 sis_i 表示 SS 中以 ii 为根的子树中所有点构成的点集):

  1. SS 与 TT 点数相同(不妨设为 nn)且编号为 1∼n1\sim n。
  2. 对于 SS 中任意一个有儿子的点 ii,对于其任意一个儿子 jj,满足在 TT 中 ii 与 sjs_j 中至少一个点有直接连边。

容易发现一棵树 TT 的淀粉树可能有很多棵。

Ysuperman 现在给定 nn 以及两棵点编号 1∼n1\sim n 的树 TT 和树 SS,设树 SS 中度数最大的点的度数为 dd,TA 需要你进行至少一次且不超过 dd 次操作,每次操作把 TT 替换成它的任意一棵淀粉树,使得最终 TT 变成 SS。

请注意,这里给定的 SS 是没有给定根的,你只需要满足最后 TT 的连边情况和 SS 相同我们就认为 TT 变成了 SS。

输入保证存在至少一组解。

输入格式

第一行两个数 n,dn,d,保证 dd 等于 SS 中度数最大的点的度数。

接下来 n−1n-1 行每行两个数 u,vu,v 表示 TT 中 u,vu,v 有连边。保证形成一棵树。

接下来 n−1n-1 行每行两个数 u,vu,v 表示 SS 中 u,vu,v 有连边。保证形成一棵树。

输出格式

为了方便检验,Ysuperman 需要你按照有根树的形式输出答案。

答案第一行一个正整数 k(1≤k≤d)k(1\le k\le d) 表示你进行的操作数。

接下来 kk 行第 ii 行 nn 个整数表示你进行第 ii 次操作后 TT 变成的有根树中 1∼n1\sim n 各个点的父亲编号,根的父亲编号规定为 00,请保证你输出树的根是淀粉树的根。

5 3
1 2
1 3
3 4
3 5
3 2
3 4
3 5
1 2
1
2 3 0 3 3

提示

样例 1 解释

这是 TT:

这是 SS:

该输出仅对 TT 进行了一次操作,即将 TT 变成了下面这棵有根树:

这棵有根树是 TT 的一棵淀粉树,理由如下:

  1. 对于 22 的儿子 11,在 TT 中 22 与 s1={1}s_1=\{1\} 中的 11 有直接连边。
  2. 对于 33 的儿子 22,在 TT 中 33 与 s2={1,2}s_2=\{1,2\} 中的 11 有直接连边。
  3. 对于 33 的儿子 44,在 TT 中 33 与 s4={4}s_4=\{4\} 中的 44 有直接连边。
  4. 对于 33 的儿子 55,在 TT 中 33 与 s5={5}s_5=\{5\} 中的 55 有直接连边。

最终得到的有根树和 SS 的连边情况相同,所以这份输出将被判定为正确。

数据范围

子任务 11(2020 分),满足 n≤6n\le 6。

子任务 22(2020 分),满足 d=2d=2。

子任务 33(2020 分),满足 TT 可以只进行一次操作即可变成 SS 且 n≤447n\le 447。

子任务 44(2020 分),满足 n≤2000n\le 2000。

子任务 55(2020 分),无特殊限制。

对于所有数据,满足 2≤n≤1052\le n\le 10^5,d×n≤2×105d\times n\le 2\times 10^5。

提示

附件下发了本题 checker。