QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 256 MB Total points: 100

#17215. Дърво

الإحصائيات

Jan 非常热爱计算机科学,尤其是图论。因此,他每天在学校都会画一棵树,并尽量不让笔离开纸面。

每天他都会构思一棵有 $N$ 个顶点的树,并从根节点开始绘制。每条连接顶点 $a_i$ 和 $b_i$ 的边都有长度 $l_i$。从根节点开始,他沿着边移动,不抬起笔,并希望至少经过所有的顶点和边一次。

由于 Jan 独自画树感到非常无聊,他决定邀请朋友们参与绘制。具体方式如下:在绘制完树上的某个顶点后,Jan 可以叫一位朋友来帮忙,这位朋友从该顶点开始继续绘制,同样必须遵守不抬起笔的限制。

Jan 最好的朋友 Athena 总是用敏锐的目光观察 Jan 的游戏。她根据公式 $L + k * P$ 对每幅画进行评分,其中 $L$ 是 Jan 和他的朋友们在纸上绘制的总长度(以厘米为单位),$k$ 是 Jan 邀请的朋友总数,$P$ 是 Jan 在开始绘制前选择的“呼叫朋友”费用。请注意,在 $L$ 中,如果某条边被多次经过,则该边的长度会被计算多次(参见样例 1)。

由于 Jan 想尽可能让 Athena 高兴,他希望选择一个费用 $P$,使得 Athena 给出的评分尽可能小。由于 Jan 有很多家庭作业,他向你寻求帮助。对于每一天,他都有不同的“呼叫朋友”费用 $P_i$ 的预想值,他想知道对于每一个 $P_i$,在最优绘制方案下,Athena 可能给出的最小评分是多少。

输入格式

标准输入的第一行包含 $T$ —— Jan 想要绘制的树的数量。接下来是树的描述以及需要求解的费用值:第一行输入 $N$ —— 树中的顶点数。接下来的 $N-1$ 行,每行包含 $a_i, b_i$ 和 $l_i$ —— 每条边的两个端点和长度。接下来是一个数字 $Q$ —— 需要求解的“呼叫朋友”费用的不同值数量。接下来的 $Q$ 行,每行包含一个数字 $P_i$ —— 该费用的值。

输出格式

对于每棵树,输出 $Q$ 个数字 —— 如果呼叫朋友的费用为 $P_i$,Jan 在每棵树上能获得的最小评分。

数据范围

$1 \le T \le 5$ $1 \le N \le 10^5$ $1 \le Q \le 10^5$ $1 \le l_i \le 10^9$ $1 \le P_i \le 10^9$ 所有测试中查询总数 $\le 10^5$

子任务

子任务 分数 $N$ $Q; \sum Q$ 附加限制
1 5 $\le 5$ $= 1$
2 10 $\le 10$ $= 1$
3 15 $\le 10^3$ $= 1$
4 5 $\le 10^5$ $= 1$ $l_i = 1, P_i = 10^9$
5 20 $\le 10^5$ $\le 50$
6 5 $\le 10^5$ $\le 10^5$ $a_i = 1$
7 20 $\le 10^5$ $\le 10^4$
8 20 $\le 10^5$ $\le 10^5$

样例

输入 1

1
7
1 2 10
1 3 10
2 4 5
2 5 10
3 6 10
3 7 20
2
10
100

输出 1

90
100

说明 1

在示例测试中,只有 1 棵 Jan 想要绘制的树。对于这棵树,有 2 个可能的 $P$ 值。

示例 1:$P_1 = 10$ 这里最优解包括呼叫两名额外的朋友: Jan 将走过路径:$1 - 2 - 4 - 2 - 5$,之后他呼叫朋友 1 从顶点 1 开始帮忙。 朋友 1 将走过路径 $1 - 3 - 7$,之后呼叫朋友 2 从顶点 3 开始帮忙。 朋友 2 将走过路径 $3 - 6$。 因此最终评分为 $L + k * P = (30 + 30 + 10) + 2 * 10 = 90$(注意,即使某条边已经被绘制过,当再次经过它时,其长度仍会加到最终结果中)。

示例 2:$P_2 = 100$ 这里由于呼叫朋友的费用太高,Jan 将独自绘制整棵树。可以证明,他能达到的最小评分为 100。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.