QOJ.ac

QOJ

実行時間制限: 2.5 s メモリ制限: 512 MB 満点: 100 ハック可能 ✓

#9838. 穿梭巴士

統計

该城市包含 $n$ 个地点,编号从 $1$ 到 $n$,由 $n-1$ 条双向道路连接。每条道路的长度为 $1$。也就是说,该城市在图论中是一棵树。

Nikuniku 在机械工厂工作,需要在城市中选择一个地点 $t$ 来建造一个新的车间。

地点 $i$ 有 $a_i$ 名员工居住。

在选择目标地点后,Nikuniku 将设计至多 $k$ 条班车路线,以帮助员工从家通勤到工厂。第 $i$ 条路线是地点 $s_i$ 和 $t$ 之间的一条简单路径(包含 $s_i$ 和 $t$)。

每位员工会步行到至少有一条路线经过的最近地点,然后乘车。班车的容量足够大,因此无需担心。一位员工的步行距离是他居住地点到上车地点之间的最短路径长度。

Nikuniku 想知道,如果她选择地点 $t$ 建造车间并设计合适的路线,对于每个地点 $t$ ($1 \le t \le n$),所有员工的最小总步行距离是多少。

但 Nikuniku 因为请了太多带薪假刚被解雇,所以请你利用你的编程技能来帮助她。

输入格式

第一行包含两个整数 $n$ ($1 \le n \le 2 \cdot 10^5$) 和 $k$ ($1 \le k \le n$),分别表示地点数量和班车路线数量。

第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^6$),表示居住在每个地点的员工人数。

接下来的 $n-1$ 行,每行包含两个整数 $x$ 和 $y$ ($1 \le x, y \le n, x \neq y$),表示地点 $x$ 和 $y$ 之间有一条道路。

保证这些道路构成一棵树。

输出格式

输出 $n$ 行。第 $i$ 行输出一个整数,表示在地点 $i$ 建造车间时的最小总步行距离。

样例

输入 1

5 2
1 2 3 4 5
1 2
1 4
3 4
4 5

输出 1

2
0
0
3
0

输入 2

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

输出 2

3
3
1
2
3
1
1
1

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.