AT_past202203_k 旅行計画

题目描述

给定一个有 $N$ 个顶点、$M$ 条边的带权有向图。 顶点编号为 $1$ 到 $N$。 第 $i$ 条边($1 \leq i \leq M$)从顶点 $u_i$ 指向顶点 $v_i$,其权重为 $w_i$。 对于 $k=1,2,\ldots,N$,请解决以下问题: - 判断是否存在一条从顶点 $1$ 出发,至少经过一次顶点 $k$,最终到达顶点 $N$ 的路径;如果存在,请输出这些路径中最短的长度。

输入格式

输入以如下格式从标准输入给出。 > $N$ $M$ > $u_1$ $v_1$ $w_1$ > $u_2$ $v_2$ $w_2$ > $\hspace{0.8cm}\vdots$ > $u_M$ $v_M$ $w_M$

输出格式

请输出 $N$ 行。对于第 $i$ 行($1 \leq i \leq N$),输出 $k=i$ 时的答案: - 如果存在一条从顶点 $1$ 出发,至少经过一次顶点 $k$,最终到达顶点 $N$ 的路径,则输出这些路径中最短的长度。 - 如果不存在这样的路径,则输出 `-1`。

说明/提示

### 数据范围 - $2 \leq N \leq 2 \times 10^5$ - $1 \leq M \leq 2 \times 10^5$ - $1 \leq u_i, v_i \leq N$ - $u_i \neq v_i$ - $1 \leq w_i \leq 10^9$ - 输入均为整数 ### 样例解释 1 - 当 $k=1$ 时,直接通过第 $3$ 条边到达顶点 $3$ 的路径最短。 - 当 $k=2$ 时,先通过第 $1$ 条边到达顶点 $2$,再通过第 $2$ 条边到达顶点 $3$ 的路径最短。 - 当 $k=3$ 时,直接通过第 $3$ 条边到达顶点 $3$ 的路径最短。 由 ChatGPT 4.1 翻译