AT_abc143_e [ABC143E] Travel by Car

题目描述

有 $N$ 个编号为 $1$ 到 $N$ 的城镇,以及 $M$ 条道路。第 $i$ 条道路连接城镇 $A_i$ 和城镇 $B_i$,是双向的,道路长度为 $C_i$。 高桥君可以驾驶汽车在这些城镇之间通过道路移动。汽车的油箱容量为 $L$ 升,每行驶 $1$ 距离消耗 $1$ 升燃料。在途中到达某个城镇时,可以选择将油箱加满(也可以选择不加油)。不能在道路中途燃料耗尽。 请回答以下 $Q$ 个询问: - 一开始,汽车油箱是满的。每个询问给定从城镇 $s_i$ 到城镇 $t_i$,请输出途中最少需要加油多少次才能到达。如果无法到达,请输出 $-1$。

输入格式

输入以如下格式从标准输入读入。 > $N$ $M$ $L$ > $A_1$ $B_1$ $C_1$ > $\vdots$ > $A_M$ $B_M$ $C_M$ > $Q$ > $s_1$ $t_1$ > $\vdots$ > $s_Q$ $t_Q$

输出格式

输出 $Q$ 行。 第 $i$ 行输出从城镇 $s_i$ 到城镇 $t_i$ 最少需要加油的次数。如果无法到达城镇 $t_i$,输出 $-1$。

说明/提示

### 限制条件 - 所有输入均为整数。 - $2 \leq N \leq 300$ - $0 \leq M \leq \frac{N(N-1)}{2}$ - $1 \leq L \leq 10^9$ - $1 \leq A_i, B_i \leq N$ - $A_i \neq B_i$ - $(A_i, B_i) \neq (A_j, B_j)$(当 $i \neq j$ 时) - $(A_i, B_i) \neq (B_j, A_j)$(当 $i \neq j$ 时) - $1 \leq C_i \leq 10^9$ - $1 \leq Q \leq N(N-1)$ - $1 \leq s_i, t_i \leq N$ - $s_i \neq t_i$ - $(s_i, t_i) \neq (s_j, t_j)$(当 $i \neq j$ 时) ### 样例解释 1 从城镇 $3$ 到城镇 $2$ 时,可以直接通过第 $2$ 条道路到达,无需中途加油。从城镇 $1$ 到城镇 $3$ 时,先通过第 $1$ 条道路到达城镇 $2$,在此加满油,再通过第 $2$ 条道路到达城镇 $3$。 ### 样例解释 2 有可能没有任何道路。 由 ChatGPT 4.1 翻译