固定 D 后,对每个 p 得到一个在 P 上允许中心落点的区间。问题化为“用最少的点(候选点为 P 上的结点)命中所有区间”是否至多为 2。
给定一棵包含 n 个节点的无向连通树,每条边 (u,v) 的权重为正整数 wuv 。树上有 m 个被标记为"红点"的节点。
现在需要在树中选择恰好 2 个节点作为 中心 ,使得所有红点到最近中心的最大带权距离 D 最小。
求该最小的 D 。
【名词解释】
带权距离:带权距离 指路径上所有边权的总和。
中心:中心 指选择的 2 个节点,红点到这些节点的最近距离即为服务距离。
最大服务距离:所有红点到最近中心的最大带权距离
第一行输入两个整数 n,m(2≦m≦n≦2×105),分别表示节点数和红点数。
第二行输入 m 个且不相同的整数 r1,r2,…,rm(1≦r1≦n) 。表示红点节点的编号。
接下来 n−1 行,每行输入三个整数 ui,vi,wi(1≦ui,vi≦n,ui=vi,1≦wi≦105) ,表示一条无向带权边。
保证输入构成一颗树。
输出一个整数 D ,表示选择恰好 2 个节点作为中心时,所有红点到最近中心的最大带权距离。
输入
7 3
2 3 6
1 2 1
2 3 1
3 4 1
4 5 1
5 6 1
6 7 1
输出
1
说明
可选择节点 3 和 6 作为中心。
红点 2,3 到中心 3 的服务距离分别为 1,0 ;
红点 6 到中心 6 的服务距离为 0 ;
因此 D=max(1,0,0)=1 。