AT_arc161_c [ARC161C] Dyed by Majority (Odd Tree)

题目描述

给定一棵有 $N$ 个顶点的树。顶点编号为 $1$ 到 $N$,第 $i$ 条边连接顶点 $A_i$ 和顶点 $B_i$。此外,对于所有顶点,**连接的边的数量都是奇数**。 你需要用黑色(`B`)或白色(`W`)给每个顶点染色。此时,将“每个顶点的颜色(`B` 或 `W`)按顶点编号顺序排列得到的字符串”称为**颜色序列**。 给定一个颜色序列 $S$。请判断是否存在一种顶点染色方式,使得对所有顶点执行以下操作一次后,颜色序列变为 $S$。如果存在,请给出操作前的一种可能的颜色序列;如果不存在,输出 `-1`。 **操作:** 对每个顶点 $k=1,2,\dots,N$,令 $C_k$ 为与其通过边相连的顶点中占多数的颜色。然后,所有顶点同时将自己的颜色变为 $C_k$。 有 $T$ 组测试数据,请分别回答。

输入格式

输入按以下格式从标准输入给出。 > $T$ > $\mathrm{case}_1$ > $\mathrm{case}_2$ > $\vdots$ > $\mathrm{case}_T$ 每组测试数据 $\mathrm{case}_i\ (1 \leq i \leq T)$ 格式如下: > $N$ > $A_1$ $B_1$ > $A_2$ $B_2$ > $\vdots$ > $A_{N-1}$ $B_{N-1}$ > $S$

输出格式

输出 $T$ 行。第 $i$ 行输出第 $i$ 个测试数据的答案。如果存在一种操作前的颜色序列,使得操作后颜色序列为 $S$,则输出其中任意一种;如果不存在,输出 `-1`。

说明/提示

### 限制 - $T \geq 1$ - $N \geq 2$ - 所有测试数据中 $N$ 的总和不超过 $2 \times 10^5$ - $1 \leq A_i < B_i \leq N\ (1 \leq i \leq N-1)$ - 给定的边 $(A_i, B_i)\ (1 \leq i \leq N-1)$ 构成一棵树 - 每个顶点 $k\ (1 \leq k \leq N)$ 在所有 $A_i, B_i$ 中出现的次数**总是奇数** - $S$ 是由 `B` 和 `W` 组成的长度为 $N$ 的字符串 ### 样例解释 1 对于第 1 个测试数据,假设操作前的颜色序列为 `WBBW`。此时: - 顶点 $1$ 的相邻顶点 $2,3,4$ 的颜色分别为 `B`, `B`, `W`,占多数的是 $C_1 = $`B` - 顶点 $2$ 的相邻顶点 $1$ 的颜色为 `W`,占多数的是 $C_2 = $`W` - 顶点 $3$ 的相邻顶点 $1$ 的颜色为 `W`,占多数的是 $C_3 = $`W` - 顶点 $4$ 的相邻顶点 $1$ 的颜色为 `W`,占多数的是 $C_4 = $`W` 因此,操作后的颜色序列为 `BWWW`,满足条件。同理,操作前的颜色序列为 `WBBB`、`WBWB`、`WWBB` 时,操作后颜色序列也为 `BWWW`,输出这些任意一个都视为正确答案。 对于第 2 个测试数据,输入的树中不可能通过一次操作得到颜色序列 `BBWW`。 由 ChatGPT 4.1 翻译