#d1305. 三进制循环

三进制循环

三进制循环

题目描述

在神奇的树の国度,叽叽 发现了一棵包含 nn 个节点三进制树,节点的编号是 1∼n1 \sim n 。这棵树的任意一个节点的值可能为 0,1,20, 1, 2 其中的一个。她喜欢有规律而不是杂乱无章的序列,她想在这棵树上找到一个路径,要满足从路径的一端到另一端,从第二个节点开始,每个节点的值都等于上一个节点的值 +1 + 1 之后对 33 取余的结果。

换言之,把路径化为一个长度为 lenlen 的序列 GG,对于序列的第 2≤i≤len2 \leq i \leq len 项,要满足 Gi=(Gi−1+1) mod 3G_i = (G_{i - 1} + 1) \bmod 3。例如:2,0,1,2,02, 0, 1, 2, 0。

现在,给出这棵三进制树,你能帮她找到最长的满足条件的路径吗,输出最长的路径长度。

输入格式

第一行输入一个整数 n(n≤500000)n (n \leq 500000) 为树的节点数量。

接下来 n−1n - 1 行,每行输入两个数 aia_i , bib_i 表示编号为 aia_i 和 bib_i 的节点之间存在一条边。

接下来一行输入 nn 个整数 valj(0≤valj≤2)val_j (0 \leq val_j \leq 2) 为第 jj 个节点的值。

输出格式

输出一个整数,为最大的满足条件的路径长度。

样例输入

8
1 2
1 3
2 4
2 5
3 6
5 7
5 8
2 1 1 0 2 1 2 0

样例输出

4

样例解释

图片