#ATarc143e. [ARC143E] Reversi
[ARC143E] Reversi
题目描述
有一棵包含 个顶点的树。每个顶点编号为 到 ,第 条边连接顶点 和顶点 。此外,每个顶点上都放置有一个“黑白棋”的棋子。每个顶点上的棋子的状态由字符串 给出, 的第 个字符为 B 时,表示顶点 上的棋子正面为黑色;为 W 时,表示正面为白色。
请判断是否可以通过以下操作恰好 次,将所有顶点上的棋子全部移除。如果可以,请在所有可能的选择顶点顺序 中,输出字典序最小的一个。
- 每次操作可以选择一个正面为白色的棋子所在的顶点,将该顶点上的棋子移除。然后,将与该顶点相邻的所有顶点上的棋子翻面。
关于“黑白棋”的棋子:棋子一面为黑色,一面为白色,翻面后正反面颜色互换。
关于数列的字典序:给定两个不同的数列 和 ,判断大小的算法如下:
记 的第 个元素为 。若 字典序小于 ,记作 ,大于则记作 。
- 取 和 中较短的长度为 ,依次比较 时 与 是否相等。
- 若存在 ,取最小的此类 为 ,比较 与 ,若 ,则 ,否则 ,算法结束。
- 若所有 都有 ,则比较长度,短的字典序更小。
输入格式
输入以如下格式从标准输入读入:
输出格式
若目标无法达成,输出 -1。若可以达成,输出一行:
样例 1
输入
4
1 2
2 3
3 4
WBWW
输出
1 2 4 3
样例 2
输入
4
1 2
2 3
3 4
BBBB
输出
-1
说明/提示
数据范围
- 给定的图为一棵树。
- 是仅由
B和W组成的长度为 的字符串。
样例解释 2
在这种情况下,无法进行任何一次操作。
由 ChatGPT 4.1 翻译