#arc143e. [arc143_e]Reversi

[arc143_e]Reversi

题目描述

给定一个包含 NN 个顶点的树。顶点从 11NN 编号,第 ii 条边连接顶点 AiA_i 和顶点 BiB_i。此外,每个顶点上都有一个黑白棋子。每个顶点上的棋子状态由字符串 SS 给出:如果 SS 的第 ii 个字符是 B,则表示顶点 ii 上的棋子是黑色朝上;如果 SS 的第 ii 个字符是 W,则表示顶点 ii 上的棋子是白色朝上。

判断是否可以通过最多执行 NN 次以下操作来移除所有顶点上的棋子。如果可以,则找到字典序最小的可能序列 P1,P2,ldots,PNP_1, P_2, \\ldots, P_N,使得在整个过程中可以按照 P1,P2,ldots,PNP_1, P_2, \\ldots, P_N 的顺序选择相应的顶点。

  • 选择一个顶点,其上的棋子是白色朝上,并将该顶点上的棋子移除。然后翻转与该顶点相邻的所有顶点上的棋子。

关于黑白棋子的说明,黑白棋子具有黑面和白面,翻转棋子将改变朝上的一面。关于序列的字典序排序规则如下:

以下是确定不同序列 SSTT 字典序的算法。

SiS_i 表示 SS 的第 ii 个元素。此外,如果 SS 的字典序小于 TT,我们将表示为 SltTS \\lt T;如果 SS 的字典序大于 TT,我们将表示为 SgtTS \\gt T

  1. LL 成为 SSTT 的长度中较小的值。对于每个 i=1,2,dots,Li=1,2,\\dots,L,我们检查 SiS_iTiT_i 是否相同。
  2. 如果存在 ii 使得 SineqTiS_i \\neq T_i,那么让 jj 成为最小的这样的 ii。然后我们比较 SjS_jTjT_j。如果 SjS_j 小于 TjT_j(作为一个数字),我们判断 SltTS \\lt T 并退出;如果 SjS_j 大于 TjT_j,我们判断 SgtTS \\gt T 并退出。
  3. 如果不存在 ii 使得 SineqTiS_i \\neq T_i,我们比较 SSTT 的长度。如果 SS 的长度小于 TT,我们判断 SltTS \\lt T 并退出;如果 SS 的长度大于 TT,我们判断 SgtTS \\gt T 并退出。

约束条件

  • 1leqNleq2times1051 \\leq N \\leq 2\\times 10^5
  • 1leqAi,BileqN1 \\leq A_i, B_i \\leq N
  • 给定的图是一棵树。
  • SS 是长度为 NN 的字符串,由字符 BW 组成。

输入

输入以以下格式从标准输入中给出:

NN A1A_1 B1B_1 vdots\\vdots AN1A_{N-1} BN1B_{N-1} SS

输出

如果目标是无法达成的,输出 -1。如果可以达成,则按照以下格式输出答案:

P1P_1 P2P_2 cdots\\cdots PNP_N


示例 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

在这种情况下,无法进行任何操作。