AT_abc191_e [ABC191E] Come Back Quickly

题目描述

在 AtCoder 国,有 $N$ 个城镇,编号为 $1$ 到 $N$,以及 $M$ 条道路,编号为 $1$ 到 $M$。 第 $i$ 条道路是从城镇 $A_i$ 到城镇 $B_i$ 的单向道路,通行需要 $C_i$ 分钟。可能存在 $A_i = B_i$ 的情况,也可能存在多条道路连接同一对城镇。 高桥君打算在这个国家散步。他将“正确的散步路线”定义为:从某个城镇出发,经过至少一条道路,最终回到出发的城镇的路径。 请你对于每个城镇,判断是否存在从该城镇出发的正确散步路线。如果存在,请求出经过这样的路线所需的最短时间。

输入格式

输入通过标准输入给出,格式如下: > $N$ $M$ > $A_1$ $B_1$ $C_1$ > $A_2$ $B_2$ $C_2$ > $A_3$ $B_3$ $C_3$ > $\vdots$ > $A_M$ $B_M$ $C_M$

输出格式

请输出 $N$ 行。对于第 $i$ 行: - 如果存在从城镇 $i$ 出发的正确散步路线,输出经过该路线所需的最短时间。 - 如果不存在,输出 $-1$。

说明/提示

### 限制条件 - $1 \leq N \leq 2000$ - $1 \leq M \leq 2000$ - $1 \leq A_i \leq N$ - $1 \leq B_i \leq N$ - $1 \leq C_i \leq 10^5$ - 输入均为整数 ### 样例解释 1 通过道路 $1, 2, 3$,城镇 $1, 2, 3$ 形成了一个环,绕一圈需要 $30$ 分钟。从城镇 $4$ 可以到达城镇 $1, 2, 3$,但无法回到城镇 $4$。 ### 样例解释 2 可能存在 $A_i = B_i$ 的道路。在这种情况下,从城镇 $1$ 出发,仅使用道路 $6$,可以在 $10$ 分钟内回到城镇 $1$。 ### 样例解释 3 请注意,可能存在多条道路连接同一对城镇。 由 ChatGPT 4.1 翻译