#CF1485E. 移动与交换
移动与交换
E. 移动与交换
每次测试的时间限制: 秒
内存限制: 兆字节
给定 个整数 ,以及一棵以顶点 为根的树,树有 个顶点。所有叶子到根的距离相同,记为 。
回忆:树是一个无环连通无向图。两个顶点之间的距离是它们之间简单路径上的边数。所有度数为 的非根顶点称为叶子。如果顶点 和 之间有边相连,且 到根的距离大于 到根的距离,则称 是 的孩子。
初始时,红币和蓝币都在顶点 上。设 为红币所在顶点, 为蓝币所在顶点。你需要进行 次移动。每次移动包含三个步骤:
- 将红币移动到 的任意一个孩子。
- 将蓝币移动到任意一个顶点 ,满足 。注意 和 不一定有边直接相连。
- 你可以选择交换两枚硬币(或者跳过这一步)。
注意, 和 可以在任何时候相等,根上没有数字。
每次移动后,你获得 分。问经过 次移动后,你能获得的最大总分数是多少?
输入
第一行一个整数 ()—— 测试用例数。
每个测试用例:
- 第一行一个整数 ()。
- 第二行包含 个整数 (,)—— 第 个表示顶点 和 之间有一条边。保证这些边构成一棵树。
- 第三行包含 个整数 ()—— 写在顶点上的数字。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出一个整数: 次移动后能获得的最大分数。
示例
输入
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
样例解释
在第一个测试用例中,一个最优方案是:
- 第 步:,;不交换;
- 第 步:,;交换(之后 ,);
- 第 步:,;不交换。
总分为 。
在第二个测试用例中,一个最优方案是:
- 第 步:,;不交换;
- 第 步:,;不交换;
- 第 步:,;不交换。
总分为 。