AT_code_festival_morning_easy_c 身体バランス
题目描述
C さん非常喜欢使用斜挎包。然而,如果总是把包挂在同一侧的肩膀上,身体会变得不平衡,因此他决定尽量让包在左右肩膀上挂的时间相同。
C さん所在的国家有 $n$ 个城市,以及连接这些城市的 $m$ 条道路。任意两条不同的道路所连接的城市对都不会相同。
有一天,C さん需要从城市 $s$ 前往城市 $t$。他希望在途中某个城市 $u$ 只换一次肩膀,从而保证包在左右肩膀上挂的时间相同。不过,C さん非常强大且追求速度,因此他从城市 $s$ 到城市 $u$,以及从城市 $u$ 到城市 $t$,都必须选择最短路径。
请你判断是否存在这样的城市 $u$,使得从 $s$ 到 $u$ 的最短路径时间与从 $u$ 到 $t$ 的最短路径时间相等。如果存在,输出任意一个满足条件的城市编号 $u$;如果不存在,输出 $-1$。
输入格式
输入如下所示:
> $n$ $m$
> $s$ $t$
> $x_1$ $y_1$ $d_1$
> $x_2$ $y_2$ $d_2$
> $\vdots$
> $x_m$ $y_m$ $d_m$
- 第 $1$ 行包含两个整数 $n$(城市数,$3 \leq n \leq 1000$)和 $m$(道路数,$1 \leq m \leq \min(n(n-1)/2, 10^4)$)。
- 城市编号为 $1$ 到 $n$。
- 第 $2$ 行包含两个整数 $s$(出发城市编号,$1 \leq s \leq n$)和 $t$(目的地城市编号,$1 \leq t \leq n$)。
- 接下来 $m$ 行,每行包含三个整数 $x_i, y_i$($1 \leq x_i, y_i \leq n$ 且 $x_i \neq y_i$)和 $d_i$($1 \leq d_i \leq 1000$),表示第 $i$ 条道路连接城市 $x_i$ 和 $y_i$,通过该道路需要 $d_i$ 的时间。
- 保证从城市 $s$ 可以到达城市 $t$。
输出格式
如果存在满足条件的城市 $u$,输出该城市编号(任意一个即可),否则输出 $-1$。
输出需换行,且不得输出多余的字符或空行。
说明/提示
### 样例解释 1
如果从城市 $1$ 前往城市 $2$ 时经过城市 $3$,则 $1 \to 3$ 需要 $3$ 的时间,$3 \to 2$ 也需要 $3$ 的时间,因此可以在城市 $3$ 换肩膀,从而左右肩膀负担相同。
### 样例解释 2
虽然可以通过 $1 \to 2 \to 4 \to 3$ 的顺序,在城市 $4$ 换肩膀使左右负担相同,但 C さん必须从 $1$ 到 $4$ 选择最短路径,因此不能这样移动。
由 ChatGPT 4.1 翻译