luogu#P8949. [YsOI2022] 淀粉树

[YsOI2022] 淀粉树

题目背景

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

题目描述

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

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

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

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

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

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

输入格式

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

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

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

输出格式

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

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

接下来 kk 行第 iinn 个整数表示你进行第 ii 次操作后 TT 变成的有根树中 1n1\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,在 TT22s1={1}s_1=\{1\} 中的 11 有直接连边。
  2. 对于 33 的儿子 22,在 TT33s2={1,2}s_2=\{1,2\} 中的 11 有直接连边。
  3. 对于 33 的儿子 44,在 TT33s4={4}s_4=\{4\} 中的 44 有直接连边。
  4. 对于 33 的儿子 55,在 TT33s5={5}s_5=\{5\} 中的 55 有直接连边。

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

数据范围

子任务 112020 分),满足 n6n\le 6

子任务 222020 分),满足 d=2d=2

子任务 332020 分),满足 TT 可以只进行一次操作即可变成 SSn447n\le 447

子任务 442020 分),满足 n2000n\le 2000

子任务 552020 分),无特殊限制。

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

提示

附件下发了本题 checker。