U436607 星际旅行

题目描述

鸢解开密码之后,梦之空的公司也已经掌握了星际旅行的技术。鸢处在的星系由很多个星球组成,每个星球都有一个独特的编号($1$ 到 $N$)。每个星球都有一些可以直接到达的星球,希望国航天部将这些连接称为星际通道。鸢还发现,这些通道都是单向的,鸢的飞船开始时位于星球 1,她的目标是穿梭到星球 $N$。

输入格式

- 第一行包含两个整数 $N,M$ 分别表示星球的数量和星际通道的数量。 - 第二行包含一个整数 $E$,表示飞船开始时的能量。 - 接下来的 $M$ 行,每行包含三个整数 $a$,$b$ 和 $c$,表示存在一条从星球 $a$ 到星球 $b$ 的通道,需要消耗$c$的能量。

输出格式

- 输出一个整数,表示到达星球 $N$ 所需的最小能量消耗,如果无法到达,则输出 $-1$。

说明/提示

### 样例解释 - 在 **样例$#1$** 中,飞船开始时的能量是10。最优的路径是从星球1到星球2(消耗2点能量),然后从星球2到星球4(消耗2点能量),最后从星球4到星球5(消耗4点能量)。总共消耗的能量是8,所以输出8。 ### 提示 - 这个问题可以通过图论和最短路径算法来解决,例如**Dijkstra** 算法或者 **Bellman-Ford** 算法。你需要构建一个图,其中节点表示星球,边表示星际通道,边的权重表示通过通道需要消耗的能量。然后,你需要找出从星球1到星球 $N$ 的最短路径(也就是能量消耗最少的路径)。 - 然而,每次通过星际通道都需要消耗能量,不同的通道需要的能量可能不同。你的飞船开始时有一定的能量,你需要找出一条能量消耗最少的路径,如果没有足够的能量到达星球 $N$,那么输出-1。 ### 注意 - 如果没有足够的能量到达星球 $N$,那么输出 $-1$。这意味着,如果所有可能的路径的能量消耗都超过了飞船开始时的能量,那么就无法到达星球 $N$。 - 即使有很多路径,但是输入任何字符后回车都会输出 $-1$(详见 **样例#2**) > 特殊情况:当 $n = 1$ 时,如果输入字符后不做任何处理会直接输出 0。 ### 其他 #### 对于 $100\%$ 的数据 - 星球的数量 $n$:$1 ≤ n ≤ 10^5$ - 星际通道的数量 $m$:$1 ≤ m ≤ 10^5$ - 飞船开始时的能量 $e$:$1 ≤ e ≤ 10^9$ - 星际通道的起始星球 $a$ 和目标星球 $b$:$1 ≤ a, b ≤ n$ - 通过星际通道需要消耗的能量 $c$:$1 ≤ c ≤ 10^7$