#aBC191E. [ABC191E] Come Back Quickly

[ABC191E] Come Back Quickly

AT_abc191_e [ABC191E] Come Back Quickly

题目描述

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

输入格式

输入通过标准输入给出,格式如下:

NN MM
A1A_1 B1B_1 C1C_1
A2A_2 B2B_2 C2C_2
A3A_3 B3B_3 C3C_3
\vdots
AMA_M BMB_M CMC_M

输出格式

请输出 NN 行。对于第 ii 行:

  • 如果存在从城镇 ii 出发的正确散步路线,输出经过该路线所需的最短时间。
  • 如果不存在,输出 1-1

输入输出样例 #1

输入 #1

4 4
1 2 5
2 3 10
3 1 15
4 3 20

输出 #1

30
30
30
-1

输入输出样例 #2

输入 #2

4 6
1 2 5
1 3 10
2 4 5
3 4 10
4 1 10
1 1 10

输出 #2

10
20
30
20

输入输出样例 #3

输入 #3

4 7
1 2 10
2 3 30
1 4 15
3 4 25
3 4 20
4 3 20
4 3 30

输出 #3

-1
-1
40
40

说明/提示

限制条件

  • 1N20001 \leq N \leq 2000
  • 1M20001 \leq M \leq 2000
  • 1AiN1 \leq A_i \leq N
  • 1BiN1 \leq B_i \leq N
  • 1Ci1051 \leq C_i \leq 10^5
  • 输入均为整数

样例解释 1

通过道路 1,2,31, 2, 3,城镇 1,2,31, 2, 3 形成了一个环,绕一圈需要 3030 分钟。从城镇 44 可以到达城镇 1,2,31, 2, 3,但无法回到城镇 44

样例解释 2

可能存在 Ai=BiA_i = B_i 的道路。在这种情况下,从城镇 11 出发,仅使用道路 66,可以在 1010 分钟内回到城镇 11

样例解释 3

请注意,可能存在多条道路连接同一对城镇。

由 ChatGPT 4.1 翻译