1
+ import sys
2
+ from collections import deque
3
+
4
+ def input (): return sys .stdin .readline ().rstrip ()
5
+
6
+ N , M = map (int , input ().split ())
7
+ edge = [[] for _ in range (N + 1 )]
8
+
9
+ # κ°μ μ 보 λ°μ
10
+ for _ in range (M ):
11
+ start , destination , cost = map (int ,input ().split ())
12
+ edge [start ].append ([destination , cost ])
13
+
14
+ # μ΄κΈ° μΈν
15
+ board = [- int (1e9 ) for _ in range (N + 1 )]
16
+ board [1 ] = 0
17
+
18
+ # μ΅μ μ κ²½λ‘λ₯Ό μ°ΎκΈ° μν΄ μμΆμ νκΈ° μν΄μ μ΄μ λ
Έλλ₯Ό κΈ°λ‘
19
+ prev_node = [- 1 for _ in range (N + 1 )]
20
+ prev_node [1 ] = 0
21
+
22
+ for _ in range (N - 1 ):
23
+ for start in range (1 ,N + 1 ):
24
+ for destination , cost in edge [start ]:
25
+ if board [destination ] < board [start ] + cost :
26
+ board [destination ] = board [start ] + cost
27
+ prev_node [destination ] = start
28
+
29
+ has_cycle = False
30
+ is_connect_target = False
31
+ for start in range (1 ,N + 1 ):
32
+ for destination , cost in edge [start ]:
33
+ # μ¬μ΄ν΄ λ°μ
34
+ if board [destination ] < board [start ] + cost :
35
+ has_cycle = True
36
+
37
+ # μ¬μ΄ν΄μ΄ λ°μν΄λ κ²½λ‘λ κ΄λ ¨μ΄ μμ μλ μμΌλ―λ‘,
38
+ # μ¬μ΄ν΄μ΄ λ°μν μ§μ μ΄ λͺ©ν μ§μ κ³Ό κ΄λ ¨μ΄ μλμ§ μ²΄ν¬ν¬
39
+ deq = deque ([start ])
40
+ visited = {start ,}
41
+ while deq :
42
+ now = deq .popleft ()
43
+
44
+ for d , c in edge [now ]:
45
+ if d in visited : continue
46
+
47
+ deq .append (d )
48
+ visited .add (d )
49
+
50
+ # μ¬μ΄ν΄μ΄ μκ³ λͺ©νμ§μ νΉμ μμμ§μ κ³Ό λΆμ΄μμΌλ©΄ -1
51
+ if d == 1 or d == N :
52
+ is_connect_target = True
53
+ break
54
+
55
+ if is_connect_target : break
56
+ break
57
+
58
+ # μ¬μ΄ν΄μ΄ μλλ° ν΄λΉ μ¬μ΄ν΄μ΄ λͺ©νμ μ°κ²°λμ΄ μμ κ²½μ°
59
+ if has_cycle and is_connect_target : print (- 1 )
60
+ else :
61
+ answer = []
62
+ now = N
63
+ while now != 1 :
64
+ answer .append (now )
65
+ now = prev_node [now ]
66
+
67
+ answer .append (now )
68
+
69
+ if now != 1 : print (- 1 )
70
+ else : print (* answer [::- 1 ])
71
+
72
+ # μ΄ κ°μ = 2λ§κ°,
73
+ # μ΄ λ
Έλ = 100κ°
74
+ # λ²¨λ§ ν¬λ = ( κ°μ X λ
Έλ -1 ) -> 198λ§ μκ° λ³΅μ‘λ κ°λ₯.
75
+
76
+ # μ΅μ μ κ²½λ‘
77
+ # μ¬μ΄ν΄μ΄ λ°μν΄λ κ° μ μμ μ μμ.
78
+ # μ¬μ΄ν΄μ΄ μλλΌλ λλ¬ν μ μμ μ μμ.
0 commit comments