小红的舞会
题号:NC317574
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}在学生会中有 n 个学生,编号为 1,2,\dots,n1 号学生为会长。他们之间有上下级关系,也就是说他们的关系就像一棵以会长为根的树,父结点就是子结点的直接上司。每个学生都有一个活跃指数,用数组 a 表示,同时有的学生会跳舞,有的学生不会。
\hspace{15pt}现在有一个舞会,有如下两条规则:
\hspace{23pt}\bullet如果第 i 名学生参与了舞会那么快乐指数会增加 a_i
\hspace{23pt}\bullet如果第 i 名学生参与了舞会,且他的直接上司会跳舞,那么他的直接上司一定会参与舞会。
\hspace{15pt}请你计算哪些学生参与舞会可以使快乐指数最大。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入一个整数 n\left(1 \leqq n \leqq 2\times 10^5 \right)
\hspace{15pt}第二行输入 n 个整数 a_i\left(-10^9 \leqq a_i \leqq 10^9 \right),代表数组 a
\hspace{15pt}第三行输入一个长为 n 的仅包含 \texttt{0,1} 的字符串 s,其第 i 位为 \texttt{0} 代表第 i 名学生不会跳舞,反之为 \texttt{1} 代表会跳舞。
\hspace{15pt}之后的 n - 1 行,每行输入两个整数 u, v,代表上下级关系形成的树形结构中有一条边连接 u, v

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。

\hspace{15pt}输出一个整数,代表可能的最大快乐指数。
示例1

输入

复制
1
4
-1 1 1 1
1011
1 2
2 3
2 4

输出

复制
2