#P8949. [YsOI2022] 淀粉树

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

[YsOI2022] 淀粉树

Description

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

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

Input Format

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

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

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

Output Format

为了方便检验,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

Hint

样例 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。