AT_abc437_g [ABC437G] Colorful Christmas Tree
题目描述
今年的圣诞节结束了,终于要迎来新的一年了。高桥正忙着收拾圣诞树。
圣诞树上装饰着红、蓝、绿三种颜色的灯泡。圣诞树上有 $N$ 个灯泡,它们由 $N-1$ 条丝带连接。如果把灯泡看作顶点,把彩带看作边,那么这个图就是一棵树。
灯泡的编号从 $1$ 到 $N$ ,色带的编号从 $1$ 到 $N-1$ 。色带 $i$ 连接灯泡 $u_i$ 和 $v_i$ 。如果 $c_i$ 为 `R`,则灯泡 $i$ 的初始亮度为红色;如果为 `G`,则灯泡 $i$ 的初始亮度为绿色;如果为 `B`,则灯泡 $i$ 的初始亮度为蓝色。
高桥正在考虑执行以下操作 $N-1$ 次,以移除所有灯带。
1. 在尚未移除的彩带中选择一条两端灯泡颜色不同的彩带,并移除这条彩带。
2. 假设灯泡 $u$ 和 $v$ 是被移除的色带两端的灯泡。对于每个灯泡 $u$ 和 $v$ ,根据以下规则改变它们点亮的颜色:
- 如果点亮的是红色,则点亮绿色。
- 如果点亮的是绿色,则点亮蓝色。
- 如果原为蓝色,则改为红色。
确定高桥是否可能通过重复此操作来移除所有丝带。如果可能,请输出一个这样的方法。
给你 $T$ 个测试用例。请逐一解决。
输入格式
输入内容由标准输入法提供,格式如下:
>$T\\$
$\mathrm{case}_1\\$
$\mathrm{case}_2\\$
$\vdots\\$
$\mathrm{case}_T$
每个测试用例的格式如下:
>$N\\$
$c_1\ c_2\ \ldots \ c_N\\$
$u_1$ $v_1\\$
$u_2$ $v_2\\$
$\vdots\\$
$u_{N-1}$ $v_{N-1}$
输出格式
按以下格式依次输出 $\mathrm{case}_1, \mathrm{case}_2, \ldots, \mathrm{case}_T$ 的答案。
如果无法去除所有色带,则输出 `No`。
如果可以,让 $e_i$ 成为在第 $i$ 次操作中移除的色带编号,并输出:
>`Yes`$\\$
$e_1$ $e_2$ $\ldots$ $e_{N-1}$
$(e_1, e_2, \ldots, e_{N-1})$ 必须是 $(1, 2, \ldots, N-1)$ 的排列。
如果有多个解法,则任何一个都将被视为正确解法。
说明/提示
#### 数据范围
- $1\leq T\leq 20000$。
- $2\leq N\leq 2000$。
- $c_i$ 是 `R`、`G` 或 `B`。
- $1\leq u_i,v_i\leq N$。
- 如果把灯泡看作顶点,把彩带看作边,那么给定的图形就是一棵树。
- $T,N,u_i,v_i$ 是整数。
- 一个输入文件中 $N^2$ 的总和最多为 $2000^2$ 。
#### 样例解释
例如,对于第一个测试用例,可以通过执行以下操作移除所有色带:
- 最初,灯泡的颜色依次为绿、蓝、蓝、红(从灯泡 $1$ 开始)。
- 移除色带 $1$ 。移除后,灯泡的颜色依次为蓝、红、蓝、红。
- 取下色带 $3$ 。取下后,灯泡的颜色依次为红、红、蓝、绿。
- 取下色带 $2$ 。取下后,灯泡的颜色依次为绿、红、红、绿。
满足条件的 $(e_1, e_2, e_3)$ 为 $(1, 3, 2)$ 和 $(2, 3, 1)$ ,任选其一均可视为正确。
对于第二个测试用例,无论如何操作都不可能移除所有灯带。