#CF1485E. 移动与交换

移动与交换

E. 移动与交换

每次测试的时间限制:22
内存限制:256256 兆字节

给定 n1n-1 个整数 a2,,ana_2, \dots, a_n,以及一棵以顶点 11 为根的树,树有 nn 个顶点。所有叶子到根的距离相同,记为 dd

回忆:树是一个无环连通无向图。两个顶点之间的距离是它们之间简单路径上的边数。所有度数为 11 的非根顶点称为叶子。如果顶点 ssff 之间有边相连,且 ff 到根的距离大于 ss 到根的距离,则称 ffss 的孩子。

初始时,红币和蓝币都在顶点 11 上。设 rr 为红币所在顶点,bb 为蓝币所在顶点。你需要进行 dd 次移动。每次移动包含三个步骤:

  1. 将红币移动到 rr 的任意一个孩子。
  2. 将蓝币移动到任意一个顶点 bb',满足 dist(1,b)=dist(1,b)+1\text{dist}(1,b') = \text{dist}(1,b) + 1。注意 bbbb' 不一定有边直接相连。
  3. 你可以选择交换两枚硬币(或者跳过这一步)。

注意,rrbb 可以在任何时候相等,根上没有数字。

每次移动后,你获得 arab|a_r - a_b| 分。问经过 dd 次移动后,你能获得的最大总分数是多少?

输入

第一行一个整数 tt1t1041 \le t \le 10^4)—— 测试用例数。

每个测试用例:

  • 第一行一个整数 nn2n21052 \le n \le 2 \cdot 10^5)。
  • 第二行包含 n1n-1 个整数 v2,v3,,vnv_2, v_3, \dots, v_n1vin1 \le v_i \le nviiv_i \neq i)—— 第 ii 个表示顶点 iiviv_i 之间有一条边。保证这些边构成一棵树。
  • 第三行包含 n1n-1 个整数 a2,,ana_2, \dots, a_n1ai1091 \le a_i \le 10^9)—— 写在顶点上的数字。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出

对于每个测试用例,输出一个整数:dd 次移动后能获得的最大分数。

示例

输入

4
14
1 1 1 2 3 4 4 5 5 6 7 8 8
2 3 7 7 6 9 5 9 7 3 6 6 5
6
1 2 2 3 4
32 78 69 5 41
15
1 15 1 10 4 9 11 2 4 1 8 6 10 11
62 13 12 43 39 65 42 86 25 38 19 19 43 62
15
11 2 7 6 9 8 10 1 1 1 5 3 15 2
50 19 30 35 9 45 13 24 8 44 16 26 10 40

输出

14
45
163
123

样例解释

在第一个测试用例中,一个最优方案是:

  • 11 步:r=4r=4b=2b=2;不交换;
  • 22 步:r=7r=7b=6b=6;交换(之后 r=6r=6b=7b=7);
  • 33 步:r=11r=11b=9b=9;不交换。
    总分为 72+69+39=14|7-2| + |6-9| + |3-9| = 14

在第二个测试用例中,一个最优方案是:

  • 11 步:r=2r=2b=2b=2;不交换;
  • 22 步:r=3r=3b=4b=4;不交换;
  • 33 步:r=5r=5b=6b=6;不交换。
    总分为 3232+7869+541=45|32-32| + |78-69| + |5-41| = 45