Per 和 Pål 是朋友,他们喜欢待在一起。他们也非常没有耐心,所以去任何地方总是选择最短路径。
放学了,他们需要回家。自然地,他们希望尽可能早地到达各自的家。同时,他们也希望在回家的路上尽可能多地结伴同行。你需要编写一个程序,计算他们能够结伴同行的最长距离(时间)。他们的社区被建模为一个图,其中路口是节点,道路是边。
道路是双向的,在两个方向上通过一条道路所需的时间相同。所有重要的目的地都位于路口。此外,学校和两个人的家从不位于同一个路口。任意两个路口之间都存在路径。
输入格式
输入的第一行包含一个整数 $T$,表示测试用例的数量。下一行包含两个整数 $N$ 和 $M$,分别表示城市中路口的数量和双向道路的数量。接下来的行包含三个整数 $S$、$P$ 和 $Q$,分别表示学校、Per 的家和 Pål 的家的位置。接下来的 $M$ 行,每行包含三个整数 $a_i$、$b_i$ 和 $c_i$,表示在路口 $a_i$ 和 $b_i$ 之间有一条双向道路,通过它需要 $c_i$ 分钟。所有路口的编号从 $0$ 到 $N-1$(包含 $0$ 和 $N-1$)。
输出格式
对于每个测试用例,输出 Per 和 Pål 在保证各自都能以最快速度到达家的情况下,能够结伴同行的最长距离(时间)。
数据范围
- $0 < T \le 100$
- $3 \le N \le 2000$
- $N - 1 \le M \le \min\left(\frac{N(N-1)}{2}, 10000\right)$
- $0 \le a_i < b_i < N$
- $0 < c_i \le 1000$
- $0 \le S, P, Q, a_i, b_i < N$
样例
输入格式 1
2 4 5 0 2 3 0 1 100 1 2 50 1 3 40 0 2 500 0 3 500 4 5 0 2 3 0 1 100 1 2 50 1 3 40 0 2 10 0 3 10
输出格式 1
100 0