题目描述
有一座城市,城市中有 $n$ 个景点,这些景点由 $n - 1$ 条双向道路连接,保证任意两个景点之间有且仅有一条路径。
每个景点有一个美丽值,为方便起见,我们认为编号为 $i$ 的景点美丽值为 $i$,所以编号越大的景点越美丽。
现在有一位旅行者来到了这座城市,他想将这座城市的所有景点游览一遍。
旅行者会选择一个景点作为他旅行的起点,然后开始他的旅行,他会按照以下步骤在景点之间移动:
- 找到一个未到达过的最美丽的景点,也就是一个未到达过的编号最大的节点 $v$。
- 设旅行者当前所在的节点为 $u$,那么将 $u$ 到 $v$ 的路径上的所有景点都标记为到达过,并且旅行者会从 $u$ 移动到 $v$。
- 这样移动一次的代价为 $u$ 与 $v$ 的距离,此处我们定义两个景点的距离为,从一个景点移动到另一个节点需要的最少道路数。
- 如果此时所有景点都是到达过的,那么旅行者会结束他的旅行,否则他会回到步骤 $1$。
特别地,我们认为旅行的起点在初始时刻也是到达过的。
现在旅行者要开始规划他的旅程了,由于他不会算术,所以他找到了你帮他解决问题。
你需要回答 $q$ 次询问,每次旅行者会给你一个 $x$,你需要帮他求出,如果旅行者从景点 $x$ 出发,此次旅行一共需要花费多少代价。
输入格式
第一行一个正整数 $n,q$。
第 $2 \sim n$ 行,每行 $2$ 个正整数 $u, v$,表示景点 $u, v$ 之间有一条双向道路连接。
第 $n + 1$ 行 $q$ 个正整数 $x_1, x_2, \ldots, x_q$,每个数表示一次询问。
输出格式
一行 $q$ 个正整数,第 $i$ 个数表示第 $i$ 次询问的答案。
样例
样例输入 #1
5 5
1 2
1 3
2 4
2 5
1 2 3 4 5
样例输出 #1
7 6 5 5 5
样例输入 #2
10 10
2 1
3 1
4 3
5 1
6 2
7 2
8 6
9 5
10 3
1 2 3 4 5 6 7 8 9 10
样例输出 #2
18 19 17 14 19 20 18 17 16 16
样例 $3$
见附件中的 ex_tourist3.in
与 ex_tourist3.ans
。
该样例满足子任务 $2$ 的约束。
样例 $4$
见附件中的 ex_tourist4.in
与 ex_tourist4.ans
。
该样例满足子任务 $3$ 的约束。
样例 $5$
见附件中的 ex_tourist5.in
与 ex_tourist5.ans
。
该样例满足子任务 $4$ 的约束。
样例 $6$
见附件中的 ex_tourist6.in
与 ex_tourist6.ans
。
该样例满足子任务 $5$ 的约束。
数据范围
对于所有数据,保证 $1 \le n \le 5 \times 10^5$,$1 \le q \le 5 \times 10^5$,各个景点之间构成一棵树。
子任务编号 | 分值 | $n \le$ | $q \le$ | 特殊性质 |
---|---|---|---|---|
$1$ | $20$ | $500$ | $500$ | 无 |
$2$ | $20$ | $10^5$ | $1$ | 无 |
$3$ | $20$ | $10^5$ | $10^5$ | 景点构成一条链 |
$4$ | $20$ | $10^5$ | $10^5$ | 无 |
$5$ | $20$ | $5 \times 10^5$ | $5 \times 10^5$ | 无 |