P14998 [Nordic OI 2019] Distance Code(通信题不支持评测)

题目描述

你的任务是创建一个可以两种模式使用的程序:作为**编码器**和作为**解码器**。 **编码器**会得到一棵包含 $n$ 个节点的树,并逐步移除树中的所有节点。在每一步中,编码器可以从当前树中移除任意一个叶子节点。 **解码器**会得到编码器依次移除节点时,各对连续被移除节点之间的距离列表,它必须据此重建树的原始结构。 解码器需要创建任意一棵与原始树具有相同结构的树(更准确地说,它必须与原始树**同构**)。

输入格式

- 第一行有一个整数 $t$,其值为 1(编码器)或 2(解码器)。 - 第二行有一个整数 $n$:树中节点的数量。节点编号为 $1, 2, \ldots, n$。 - 如果 $t = 1$,接下来有 $n - 1$ 行描述这棵树。每行包含两个整数 $a$ 和 $b$:表示节点 $a$ 和 $b$ 之间有一条边。 - 如果 $t = 2$,则只有一行,包含 $n - 1$ 个整数:依次移除的节点之间的距离。

输出格式

- 如果 $t = 1$,编码器必须输出一个 $1, 2, \ldots, n$ 的排列:表示节点从树中被移除的顺序。 - 如果 $t = 2$,解码器必须输出 $n - 1$ 行来描述树的结构。

说明/提示

**子任务 1(21 分)** - $2 \leq n \leq 10$ **子任务 2(47 分)** - $2 \leq n \leq 500$ **子任务 3(32 分)** - $2 \leq n \leq 10^5$ 翻译由 DeepSeek V3 完成