#agc050f. [agc050_f]NAND Tree

[agc050_f]NAND Tree

题目描述

有一个树,其顶点上标有 0011。树有 NN 个顶点,编号从 11NN。对于每个 ii,有一条连接顶点 aia_i 和顶点 bib_i 的边。顶点 ii 的标记为 cic_i

Snuke 想要在树上重复执行以下操作:

  • 选择一条边,合并它们,并用两个旧顶点的标签的 NAND 值标记新顶点。

执行 N1N-1 次操作后,树会变成一个单独的顶点。在 (N1)!(N-1)! 种可能中,有多少种结果顶点标记为 11?将答案对 22 取模。

注意事项

  • NAND 操作定义如下:$NAND(0, 0) = NAND(0, 1) = NAND(1, 0) = 1, NAND(1, 1) = 0$。
  • 当我们合并连接顶点 sstt 的边时,我们删除这条边,并同时合并这两个顶点。新树中,当且仅当旧树中有边连接 ssuu,或者连接 ttuu 时,合并后的顶点和顶点 uu 之间存在一条边。

约束条件

  • 2leqNleq3002 \\leq N \\leq 300
  • 1leqai<bileqN1 \\leq a_i < b_i \\leq N
  • 输入表示一棵有效的树。
  • 0leqcileq10 \\leq c_i \\leq 1
  • 输入中的所有值都是整数。

输入

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

NN a1a_1 b1b_1 :: aN1a_{N-1} bN1b_{N-1} c1c_1 c2c_2 cdots\\cdots cNc_N

输出

打印答案。


示例输入 1

4
1 2
2 3
2 4
0 1 1 0

示例输出 1

0

在所有 66 种可能的情况中,有 44 种最终结果标记为 11,因此答案为 4mod2=04 \\ mod \\ 2 = 0


示例输入 2

4
1 2
2 3
3 4
1 1 0 1

示例输出 2

1

示例输入 3

20
3 15
1 12
10 16
3 19
5 20
1 9
6 13
14 19
2 4
8 11
12 16
6 20
2 17
16 18
17 19
7 10
16 20
2 20
8 20
1 0 0 1 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0

示例输出 3

0