2806 「COCI 2014.10」Kamp

内存限制:128 MB 时间限制:2000 ms

题目描述

译自 COCI 2014.10 T6. Kamp

在一个目前刚被淹的村庄,一个秘密的超人人道主义集中营成立了。村庄包含 $N$ 座房屋,编号为 $1$ 到 $N$。这 $N$ 座房屋用 $N-1$ 条道路连通,任意两座房屋之间的路径两两不同。对于所有道路,我们知道一辆卡车通过这条道路所花费的时间。这个集中营会在某人的花园里搭起来,但是营长还不知道在谁的房子的花园里搭。

Mirko 被任命为司机。他的任务是用他的超级大卡车开车把志愿者队伍从营地拉到工作地点。他的卡车很大,一次就可以装下所有志愿者队伍!一共有 $K$ 个志愿者队伍,每个队伍都要去一座不同的房屋。

最初,所有 $K$ 支队伍都上了车,然后 Mirko 按自己决定的顺序把他们拉到目的地。最后,当把所有队伍都送到了目的地后,他留下来帮助最后一支队伍(他不会回集中营)。

为了帮助营长决定在哪儿建立营地,他想知道,对于每一座房屋,如果在这座房屋设立营地的话,Mirko 把所有队伍拉到指定地点的最少时间花费是多少。

输入格式

第一行包含两个整数 $N,K$;

接下来 $N-1$ 行,每行三个整数 $A_i,B_i,C_i$,表示 $A_i$ 与 $B_i$ 之间有一条双向道路,卡车通过需要花费 $C_i$ 分钟;

接下来 $K$ 行,每行一个整数,表示第 $i$ 个队伍要去的房屋编号。

输出格式

输出 $N$ 行,第 $i$ 行输出一个整数,表示如果在 $i$ 号房屋建立营地,把 $K$ 支队伍送到指定房屋处的最少时间花费。

样例 1

如果 Mirko 从 $1$ 号房屋出发,他可以按 $1-2-4-2-5$ 的顺序送志愿者队伍,如果从 $2$ 号房屋出发,可以按 $2-5-4$ 的顺序送。

样例 2

数据范围与提示

对于 $50\%$ 的分数,保证 $N\le 2\times 10^3$;
对于全部数据,$1\le N\le 5\times 10^5,1\le K\le N,1\le A_i,B_i\le N,1\le C_i\le 10^6$。

样例

样例输入 1

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

样例输出 1

5 3 7 2 2

样例输入 2

7 2 1 2 4 1 3 1 2 5 1 2 4 2 4 7 3 4 6 2 3 7

样例输出 2

11 15 10 13 16 15 10