SP7101 CANDN - Charly And Nito

题目描述

Charly 和 Nito 是好朋友,他们常常在 Palermo Hollywood 的一家酒吧碰面。每到凌晨 3 点左右,他们就会觉得困倦,想要回家。为了尽快到家,两人都会选择一条最短路径。不过,Charly 和 Nito 也希望能在回家的路上聊聊“当年的好时光”,因此他们希望尽可能走同一条路。 他们居住的城市可以用一系列交叉路口和街道表示。每条街道连接两个不同的交叉路口,并且可以双向行走。没有两条街道连接相同的交叉路口对。需要注意的是,Charly 和 Nito 并不住在一起,也不住在酒吧附近。从酒吧到 Charly 家至少有一条路径,同样,从酒吧到 Nito 家也至少有一条路径。 现给定城市中的交叉路口和街道信息,以及酒吧、Charly 家和 Nito 家的具体位置,你需要告诉他们两人能一起走的最长路程,同时保证他们各自走的总距离不超过从酒吧到各自家里的最短距离。此外,Charly 和 Nito 还想知道他们分别独自走了多远。

输入格式

输入包含多个测试用例,每个测试用例由多行描述。第一行有五个整数 $J$、$B$、$C$、$N$ 和 $S$,用空格分隔。$J$ 表示城市中的交叉路口数量($3 \leq J \leq 10^5$)。$B$、$C$、$N$ 分别是酒吧、Charly 家以及 Nito 家所在的交叉路口编号($1 \leq B, C, N \leq J$),这些编号各不相同。$S$ 表示城市的街道数量($2 \leq S \leq 2 \times 10^5$)。 接下来的 $S$ 行描述了每条街道的信息,每行包含三个整数 $E1$、$E2$ 和 $L$,中间用空格分开。$E1$ 和 $E2$ 是街道连接的两个不相同的交叉路口($1 \leq E1, E2 \leq J$, $E1 \neq E2$),$L$ 是这条街道的长度($1 \leq L \leq 10^6$)。保证每对端点之间只有一条街道,并且存在从 $B$ 到 $C$ 和 $N$ 的路径。输入的最后一行是五个 $-1$,用空格分隔,不作为测试用例处理。

输出格式

对于每个测试用例,输出一个包含三个整数的行,分别是 $T$、$C$ 和 $N$。$T$ 表示 Charly 和 Nito 一起走的最长距离,$C$ 是 Charly 独自走的距离,$N$ 是 Nito 独自走的距离。

说明/提示

- $3 \leq J \leq 10^5$ - $1 \leq B, C, N \leq J$ - $2 \leq S \leq 2 \times 10^5$ - $1 \leq E1, E2 \leq J, E1 \neq E2$ - $1 \leq L \leq 10^6$ **本翻译由 AI 自动生成**