#P14456. [ICPC 2025 Xi'an R] January's Color

[ICPC 2025 Xi'an R] January's Color

Description

给定一棵有根树,共有 nn 个顶点,根节点为顶点 11。保证树中不存在恰好有一个子节点的顶点。换句话说,每个顶点要么是叶子节点,要么至少有 两个 子节点。你拥有这棵树中的一部分顶点。

你手中可能已经拥有一些顶点。你可以通过以下两种方式获得新的顶点:

  • 直接从银行购买一个顶点 ii,需要花费 cic_i 的费用;
  • 从你手中选择 两个不同的、具有相同父节点的顶点,将它们弃置,并免费获得它们的父节点。

现在,你有 mm 个查询。对于每个查询,你一开始手中仅有一个顶点 xx,目标是最后只剩下一个顶点 yy,且没有其他顶点剩余。请你计算达到这一目标所需的最小额外花费;如果无法做到,则输出无解。

Input Format

输入包含多个测试用例。第一行包含一个整数 tt1t1051 \leq t \leq 10^5),表示测试用例的数量。对于每个测试用例:

  • 第一行包含两个整数 nnmm3n31053 \leq n \leq 3 \cdot 10^51m31051 \leq m \leq 3 \cdot 10^5),分别表示树的顶点数和查询数。
  • 第二行包含 nn 个整数 c1,c2,,cnc_1, c_2, \ldots, c_n1ci1091 \leq c_i \leq 10^9),表示从银行购买每个顶点的费用。
  • 接下来的 n1n - 1 行中,每行包含两个整数 uuvv1u,vn1 \leq u, v \leq nuvu \neq v),表示树中的一条边。
  • 接下来的 mm 行中,每行包含两个整数 xxyy1x,yn1 \leq x, y \leq nxyx \neq y),表示一个查询。

保证所有测试用例中 nn 的总和与 mm 的总和均不超过 31053 \cdot 10^5

Output Format

对于每个查询,输出一个整数,表示该查询所需的最小额外花费。如果无法最终只剩下顶点 yy,输出 1-1

3
5 5
1 2 3 4 5
1 2
1 3
2 4
2 5
3 1
2 1
4 1
5 1
5 2
5 5
1 5 1 1 1
1 2
1 3
2 4
2 5
3 1
2 1
4 1
5 1
2 5
6 5
9 9 8 2 4 4
1 2
1 3
1 4
1 5
1 6
2 1
3 1
4 1
5 1
6 1
2
3
8
7
4
2
1
2
2
-1
2
2
4
2
2

Hint

在第一个测试用例的第一个查询中,你最初拥有顶点 33,目标是获得顶点 11。最便宜的方案是直接从银行购买顶点 22,花费 c2=2c_2 = 2。然后将顶点 2233 弃置,免费获得它们的公共父节点顶点 11。可以证明这是最小花费的方案。

在第二个测试用例的第一个查询中,你同样从顶点 33 开始,希望获得顶点 11。不同的是,这次不购买顶点 22,而是购买顶点 4455,花费 c4+c5=2c_4 + c_5 = 2。然后将顶点 4455 弃置,免费获得它们的父节点顶点 22。接着将顶点 2233 弃置,免费获得它们的父节点顶点 11。可以证明这是最小花费的方案。

请注意,你不能再购买另一个顶点 33 并将其与原先的顶点 33 一起弃置来获得顶点 11,因为这两个顶点 33 不满足“两个不同顶点”的要求。

翻译由 ChatGPT-5 完成