#arc143e. [arc143_e]Reversi
[arc143_e]Reversi
题目描述
给定一个包含 个顶点的树。顶点从 到 编号,第 条边连接顶点 和顶点 。此外,每个顶点上都有一个黑白棋子。每个顶点上的棋子状态由字符串 给出:如果 的第 个字符是 B
,则表示顶点 上的棋子是黑色朝上;如果 的第 个字符是 W
,则表示顶点 上的棋子是白色朝上。
判断是否可以通过最多执行 次以下操作来移除所有顶点上的棋子。如果可以,则找到字典序最小的可能序列 ,使得在整个过程中可以按照 的顺序选择相应的顶点。
- 选择一个顶点,其上的棋子是白色朝上,并将该顶点上的棋子移除。然后翻转与该顶点相邻的所有顶点上的棋子。
关于黑白棋子的说明,黑白棋子具有黑面和白面,翻转棋子将改变朝上的一面。关于序列的字典序排序规则如下:
以下是确定不同序列 和 字典序的算法。
设 表示 的第 个元素。此外,如果 的字典序小于 ,我们将表示为 ;如果 的字典序大于 ,我们将表示为 。
- 让 成为 和 的长度中较小的值。对于每个 ,我们检查 和 是否相同。
- 如果存在 使得 ,那么让 成为最小的这样的 。然后我们比较 和 。如果 小于 (作为一个数字),我们判断 并退出;如果 大于 ,我们判断 并退出。
- 如果不存在 使得 ,我们比较 和 的长度。如果 的长度小于 ,我们判断 并退出;如果 的长度大于 ,我们判断 并退出。
约束条件
- 给定的图是一棵树。
- 是长度为 的字符串,由字符
B
和W
组成。
输入
输入以以下格式从标准输入中给出:
输出
如果目标是无法达成的,输出 -1
。如果可以达成,则按照以下格式输出答案:
示例 1
4
1 2
2 3
3 4
WBWW
示例 1 输出
1 2 4 3
示例 2
4
1 2
2 3
3 4
BBBB
示例 2 输出
-1
在这种情况下,无法进行任何操作。