#P16028. [Lot2016] maxdist
[Lot2016] maxdist
题目描述
Focșani 城市由 个城区组成,城市道路结构是一棵有 个节点的树,每个节点表示一个城区。
最开始,整座城市都属于第一帮骑行者。某一天,第二帮骑行者出现了,并且每天都会占领一个原本属于第一帮骑行者的城区。
每天结束时,两个帮派的骑行者都会分别从自己控制的某个城区出发,前往自己控制的另一个城区,途中不能多次经过同一个城区。因为他们都非常“卷”,所以每天都想走尽可能远的路。
因此,在每天有一个城区被第二帮派占领之后,两个帮派都想知道:在自己当前控制的城区中,任选起点和终点,能走出的最大距离是多少。
注意:一天中先发生城区占领,然后再计算当天的最大距离。
题目要求
已知城市的树结构、天数 ,以及每一天被第二帮派占领的城区编号。请输出每一天结束后:
- 第一帮派所能选择的最大路径距离;
- 第二帮派所能选择的最大路径距离。
树上两个节点之间的距离定义为它们之间路径上的边数。
输入格式
第一行包含两个正整数 ,表示城区数和需要关注的天数。
接下来 行,每行包含两个整数 ,表示 与 之间有一条边。
接下来 行,每行包含一个整数 ,表示当天被第二帮派占领的城区编号。
输出格式
包含 行。
第 行输出两个整数,分别表示第 天结束后,第一帮派和第二帮派能走出的最大距离。
数据范围与约定
- ;
- ;
- ;
- 每个城区最多只会被占领一次;
- 如果某个帮派控制的城区数量少于 2,则该帮派的最大距离视为 0;
- 骑行者可以经过不属于自己帮派的城区,但起点和终点必须属于自己帮派;
- 对于 20% 的测试点,;
- 其余 80% 的测试点,。
样例
输入
10 6
1 2
2 3
2 8
3 4
3 5
1 6
6 7
6 9
1 10
3
6
4
5
10
9
输出
5 0
5 3
5 4
4 4
4 4
4 5