中级守护
题目链接: 酷町堂:2901
题目描述 De**ion
某国首都突然爆发了一次瘟疫,为了不让疾病传播到边境城市(叶子节点所表示的城市),**只能决定在一些城市建立**点,使得从首都到边境城市的每一条路径上都至少有一个**点,边境城市也可以建立**点。但特别要注意的是,首都是不能建立**点的。现在假设该国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点。
现在,在 H 国的一些城市中已经驻扎有军队,且一个城市可以驻扎多个军队。一支军队可以在有道路连接的城市间移动,并在除首都以外的任意一个城市建立**点,且只能在一个城市建立**点。一支军队经过一条道路从一个城市移动到另一个城市所需要的时间等于道路的长度(单位:小时)。
请问最少需要多少个小时才能控制疫情。注意:不同的军队可以同时移动。
输入描述 Input De**ion
第一行一个整数 n,表示城市个数。
接下来的 n-1 行,每行 3 个整数,u、v、w,每两个整数之间用一个空格隔开,表示从城市 u 到城市 v 有一条长为 w 的道路。数据保证输入的是一棵树,且根节点编号为 1。
接下来一行一个整数 m,表示军队个数。
接下来一行 m 个整数,每两个整数之间用一个空格隔开,分别表示这 m 个军队所驻扎的城市的编号。
输出描述 Output De**ion
共一行,包含一个整数,表示控制疫情所需要的最少时间。如果无法控制疫情则输出-1。
样例输入 Sample Input
4 1 2 1 1 3 2 3 4 3 2 2 2
样例输出 Sample Output
3
数据范围及提示 Data Size & Hint
【输入输出样例说明】
第一支军队在 2 号点设立**点,第二支军队从 2 号点移动到 3 号点设立**点,所需时间为 3 个小时。
【数据范围】
保证军队不会驻扎在首都。
对于 20%的数据,2≤ n≤ 10;
对于 40%的数据,2 ≤n≤50,0<=w <=10^5;
对于 60%的数据,2 ≤ n≤1000,0<=w <=10^6;
对于 80%的数据,2 ≤ n≤10,000;
对于 100%的数据,2≤m≤n≤50,000,0<=w <=10^9。
NOIP2012提高组D2第3题
谁能发给我正确的代码我**报!
直接采纳!
高级启示者