#CF868E. 警察与树

警察与树

警察与树

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

给定一棵树(一种连通无向无环图),顶点编号从 11 到 nn,第 ii 条边的长度为 wiw_{i}。在顶点 ss 处有一名警察,在顶点 x1,x2,...,xmx_{1}, x_{2}, ..., x_{m}(xj≠sx_{j} \ne s)处有 mm 名罪犯。

警察可以以速度 11 沿边行走,罪犯可以以任意大的速度移动。如果某一时刻罪犯与警察处于同一位置,罪犯会立即被警察逮捕。假设所有人都采取最优策略行事(即罪犯尽量拖延被捕时间,警察尽量缩短逮捕时间),请你求出警察抓捕全部罪犯所需的时间。所有人随时都知道彼此的位置。

输入格式

第一行包含一个整数 nn(1≤n≤501 \leq n \leq 50),表示树的顶点数量。接下来 n−1n-1 行,每行包含三个整数 ui,vi,wiu_{i}, v_{i}, w_{i}(1≤ui,vi≤n1 \leq u_{i}, v_{i} \leq n,1≤wi≤501 \leq w_{i} \leq 50),表示存在一条长度为 wiw_{i} 的无向边连接 uiu_{i} 和 viv_{i}。保证给定的图是一棵树。

接下来一行包含一个整数 ss(1≤s≤n1 \leq s \leq n),表示警察的起始顶点编号。

接下来一行包含一个整数 mm(1≤m≤501 \leq m \leq 50),表示罪犯的数量。下一行包含 mm 个整数 x1,x2,...,xmx_{1}, x_{2}, ..., x_{m}(1≤xj≤n1 \leq x_{j} \leq n, xj≠sx_{j} \ne s),表示罪犯的起始顶点编号。xjx_{j} 不一定各不相同。

输出格式

如果警察无法抓住所有罪犯,输出一行 "Terrorists win"(不带引号)。

否则,输出一个整数,表示警察抓住所有罪犯所需的最短时间。

样例输入 1

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

样例输出 1

8

样例输入 2

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

样例输出 2

21

提示

在第一个样例中,一种最优的策略如下:第 22 号罪犯移动到顶点 33,第 44 号罪犯移动到顶点 44。警察前往顶点 44,并同时抓住两名罪犯。之后,第 11 号罪犯移动到顶点 22。警察前往顶点 33 抓住第 22 号罪犯,然后再前往顶点 22 抓住剩下的罪犯。

数据范围

对所有数据:1≤n≤501\le n\le50,1≤m≤501\le m\le50,1≤wi≤501\le w_i\le50,且 xj≠sx_j\ne s。

子任务编号 分值 特殊限制
1 20 n≤8n\le8,m≤5m\le5
2 40 m≤20m\le20
3 无特殊限制

各子任务数据彼此独立计分。