#ATarc161c. [ARC161C] Dyed by Majority (Odd Tree)

[ARC161C] Dyed by Majority (Odd Tree)

题目描述

给定一棵有 NN 个顶点的树。顶点编号为 11NN,第 ii 条边连接顶点 AiA_i 和顶点 BiB_i。此外,对于所有顶点,连接的边的数量都是奇数

你需要用黑色(B)或白色(W)给每个顶点染色。此时,将“每个顶点的颜色(BW)按顶点编号顺序排列得到的字符串”称为颜色序列

给定一个颜色序列 SS。请判断是否存在一种顶点染色方式,使得对所有顶点执行以下操作一次后,颜色序列变为 SS。如果存在,请给出操作前的一种可能的颜色序列;如果不存在,输出 -1

操作: 对每个顶点 k=1,2,,Nk=1,2,\dots,N,令 CkC_k 为与其通过边相连的顶点中占多数的颜色。然后,所有顶点同时将自己的颜色变为 CkC_k

TT 组测试数据,请分别回答。

输入格式

输入按以下格式从标准输入给出。

TT
case1\mathrm{case}_1
case2\mathrm{case}_2
\vdots
caseT\mathrm{case}_T

每组测试数据 casei (1iT)\mathrm{case}_i\ (1 \leq i \leq T) 格式如下:

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

输出格式

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

样例 1

输入

2
4
1 2
1 3
1 4
BWWW
4
1 2
1 3
1 4
BBWW

输出

WBBW
-1

说明/提示

限制

  • T1T \geq 1
  • N2N \geq 2
  • 所有测试数据中 NN 的总和不超过 2×1052 \times 10^5
  • 1Ai<BiN (1iN1)1 \leq A_i < B_i \leq N\ (1 \leq i \leq N-1)
  • 给定的边 (Ai,Bi) (1iN1)(A_i, B_i)\ (1 \leq i \leq N-1) 构成一棵树
  • 每个顶点 k (1kN)k\ (1 \leq k \leq N) 在所有 Ai,BiA_i, B_i 中出现的次数总是奇数
  • SS 是由 BW 组成的长度为 NN 的字符串

样例解释 1

对于第 1 个测试数据,假设操作前的颜色序列为 WBBW。此时:

  • 顶点 11 的相邻顶点 2,3,42,3,4 的颜色分别为 B, B, W,占多数的是 C1=C_1 =B
  • 顶点 22 的相邻顶点 11 的颜色为 W,占多数的是 C2=C_2 =W
  • 顶点 33 的相邻顶点 11 的颜色为 W,占多数的是 C3=C_3 =W
  • 顶点 44 的相邻顶点 11 的颜色为 W,占多数的是 C4=C_4 =W

因此,操作后的颜色序列为 BWWW,满足条件。同理,操作前的颜色序列为 WBBBWBWBWWBB 时,操作后颜色序列也为 BWWW,输出这些任意一个都视为正确答案。

对于第 2 个测试数据,输入的树中不可能通过一次操作得到颜色序列 BBWW

由 ChatGPT 4.1 翻译