AT_iroha2019_day1_i リスのお仕事

题目描述

今天,松鼠的任务是将橡子从一棵树运到另一棵树。 在松鼠生活的森林中,总共有 $N$ 棵树,每棵树都被标记了从 $1$ 到 $N$ 的编号。此外,还有 $M$ 根链接这些树的树枝,第 $i$ 根树枝($1 \leq i \leq M$)可以双向通行于树 $A_i$ 和树 $B_i$ 之间。 每根树枝上有一个大小为 $C_i$ 的缝隙,松鼠需要跳过这些缝隙才能通过。在相同大小的缝隙上跳跃,松鼠会感到轻松,但在携带橡子跳过不同大小的缝隙时会感到疲劳。因此,它在每次跳过不同大小的缝隙前都需要休息一次。不过,在第一次跳跃之前不需要休息。 松鼠需要从编号为 $1$ 的树出发,带着橡子,沿着一条可以使休息次数最少的路径到达编号为 $N$ 的树。 森林精灵依罗哈希望在**松鼠休息的地方**和**终点树**上每个地方放置 $K$ 个小果子作为零食。 请问她需要准备多少个小果子?

输入格式

输入如下格式: > $ N\ M\ K $ > $ A_1\ B_1\ C_1 $ > $ \vdots $ > $ A_M\ B_M\ C_M $ (每一行表示一根树枝的信息。)

输出格式

输出需要准备的果子数量的最小值。如果松鼠没有办法到达树 $N$,那么输出 `-1`。 如果可以到达,输出 $(最少的休息次数 + 1) \times K$。 ## 数据范围 - $ 2 \leq N \leq 10^5 $ - $ 0 \leq M \leq 10^5 $ - $ 1 \leq K \leq 10^4 $ - $ 1 \leq A_i, B_i \leq N $ - $ A_i \neq B_i $ - 对于不同的 $i$ 和 $j$,$(A_i, B_i, C_i)$ 不能相同 - $ 1 \leq C_i \leq 10^5 $ ### 示例 **输入示例 2** ```plaintext 5 5 2 1 2 1 2 3 1 2 4 2 3 4 3 4 5 2 ``` **输出示例 2** ```plaintext 4 ``` **本翻译由 AI 自动生成**

说明/提示

### 制約 - $ 2\ \leq\ N\ \leq\ 10^5 $ - $ 0\ \leq\ M\ \leq\ 10^5 $ - $ 1\ \leq\ K\ \leq\ 10^4 $ - $ 1\ \leq\ A_i,\ B_i\ \leq\ N $ - $ A_i\ \neq\ B_i $ - $ i\ \neq\ j $ について $ (A_i,\ B_i,\ C_i)\ \neq\ (A_j,\ B_j,\ C_j) $ - $ 1\ \leq\ C_i\ \leq\ 10^5 $ ### 解説 [解説](https://img.atcoder.jp/iroha2019-day1/editorial-I.pdf) ### Sample Explanation 1 \- - - - - - ### 入力例 2 ``` 5 5 2 1 2 1 2 3 1 2 4 2 3 4 3 4 5 2 ``` ### 出力例 2 ``` 4 ``` ### 解説 \[解説\](https://img.atcoder.jp/iroha2019-day1/editorial-I.pdf)