题目背景
JOISC2022 D4T3
题目描述
JOI 镇是一个曾经辉煌的工业区。为了运输产品,其中建起了许多铁轨与火车站。尽管 JOI 镇已经衰落,那里仍有许多不再被使用的铁轨与火车站。
JOI 镇中有 N 个火车站,编号为 1,2,…,N。其中还剩下 M 条铁轨。第 i 条铁轨 (1≤i≤M) 双向连接火车站 Ai 和 Bi,且其宽度为 Wi。保证能够从任意火车站经过若干条铁轨到达任意其他火车站。
你是 JOI 镇的镇长。你计划吸引铁路公司来使用 JOI 镇中留下的铁轨与火车站,使得 JOI 镇复苏成为「铁路之镇」。
于是,共有 Q 个铁路公司申请参与这个复兴计划。然而,不同公司的火车所需的铁轨宽度也有所不同。这意味着你需要重建这些铁轨,使得它们都匹配对应公司的火车。
第 j (1≤j≤Q) 家铁路公司的火车所需的铁轨宽度为 Xj。为了迎合公司 j,要求满足以下条件:
- 条件:保证能够从任意火车站只经过宽度为 Xj 的铁轨到达任意其他火车站。
为了满足上述条件,你可以按如下方式重建铁轨任意次:
- 重建:选择一条铁轨,你可以重建其使得其宽度增加或减少 1 并花费 1。然而,若其宽度为 1,则不能再减少其宽度。
为了确定你能满足哪些公司,你需要求出迎合公司 j 所需要的最小花费。
请写一个程序,对于给定的火车站、铁轨与铁路公司的信息,计算迎合公司 j 所需要的最小花费。
输入格式
第一行,两个正整数 N,M,表示火车站的个数和铁轨的条数。
接下来 M 行,其中第 i (1≤i≤M) 行包含三个正整数 Ai,Bi,Wi,表示第 i 条铁轨连接的火车站和其宽度。
第 M+2 行,一个正整数 Q,表示铁路公司的个数。
接下来 Q 行,其中第 j (1≤j≤Q) 行包含一个正整数 Xj,表示第 j 个铁路公司的火车需要的铁路宽度。
输出格式
输出 Q 行,第 j (1≤j≤Q) 包含一个整数,表示迎合公司 j 所需要的最小花费。
提示
【样例解释 #1】
例如,为了迎合公司 1,若你按如下方式重建铁轨,将会花费 8。
- 将铁轨 6 的宽度减少 4。
- 将铁轨 9 的宽度减少 3。
- 将铁轨 10 的宽度增加 1。
可以证明不可能用少于 8 的花费迎合公司 1。因此,在第一行输出 8。
该样例满足子任务 1,2,4,5,6 的限制。
【样例解释 #2】
该样例满足所有子任务的限制。
【样例解释 #3】
该样例满足子任务 2,4,5,6 的限制。
【数据范围】
对于所有数据,满足:
- 2≤N≤500。
- N−1≤M≤100000。
- 1≤Q≤1000000。
- 1≤Ai<Bi≤N (1≤i≤M)。
- 1≤Wi≤109 (1≤i≤M)。
- (Ai,Bi,Wi)=(Aj,Bj,Wj) (1≤i<j≤M)。
- 1≤Lj≤Rj≤N (1≤j≤Q)。
- 保证能够从任意火车站经过若干条铁轨到达任意其他火车站。
- 1≤Xj≤109 (1≤j≤Q)。
- Xj<Xj+1 (1≤j<Q)。
详细子任务附加限制及分值如下表所示:
子任务编号 |
附加限制 |
分值 |
1 |
M≤16,Q≤10 |
3 |
2 |
Q≤10 |
4 |
3 |
Bi=Ai+1 (1≤i≤M) |
7 |
4 |
M≤1000 |
28 |
5 |
Q≤20000 |
35 |
6 |
无附加限制 |
23 |