-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1956.py
More file actions
59 lines (49 loc) ยท 2.2 KB
/
1956.py
File metadata and controls
59 lines (49 loc) ยท 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
'''
1956๋ฒ
์ ์ถ
๋ง์ ์ฌ๋
์์ฝ๋ฉ
์ฌ์ฑ์ ๊ฒฐ๊ณผ
์ฑ์ ํํฉ
๋ด ์ ์ถ
๊ฐ์
์ง๋ฌธ ๊ฒ์
์ด๋
์๊ฐ ์ ํ ๋ฉ๋ชจ๋ฆฌ ์ ํ ์ ์ถ ์ ๋ต ๋ง์ ์ฌ๋ ์ ๋ต ๋น์จ
2 ์ด 192 MB 8881 4178 3095 46.111%
๋ฌธ์
V๊ฐ์ ๋ง์์ E๊ฐ์ ๋๋ก๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋์๊ฐ ์๋ค. ๋๋ก๋ ๋ง์๊ณผ ๋ง์ ์ฌ์ด์ ๋์ฌ ์์ผ๋ฉฐ, ์ผ๋ฐฉ ํตํ ๋๋ก์ด๋ค. ๋ง์์๋ ํธ์์ 1๋ฒ๋ถํฐ V๋ฒ๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค๊ณ ํ์.
๋น์ ์ ๋๋ก๋ฅผ ๋ฐ๋ผ ์ด๋์ ํ๊ธฐ ์ํ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ๋ค. ์ด๋์ ํ ํ์๋ ๋ค์ ์์์ ์ผ๋ก ๋์์ค๋ ๊ฒ์ด ์ข๊ธฐ ๋๋ฌธ์, ์ฐ๋ฆฌ๋ ์ฌ์ดํด์ ์ฐพ๊ธฐ๋ฅผ ์ํ๋ค. ๋จ, ๋น์ ์ ์ด๋์ ๋งค์ฐ ๊ท์ฐฎ์ํ๋ฏ๋ก, ์ฌ์ดํด์ ์ด๋ฃจ๋ ๋๋ก์ ๊ธธ์ด์ ํฉ์ด ์ต์๊ฐ ๋๋๋ก ์ฐพ์ผ๋ ค๊ณ ํ๋ค.
๋๋ก์ ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, ๋๋ก์ ๊ธธ์ด์ ํฉ์ด ๊ฐ์ฅ ์์ ์ฌ์ดํด์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ ๋ง์์ ์๋ณตํ๋ ๊ฒฝ์ฐ๋ ์ฌ์ดํด์ ํฌํจ๋จ์ ์ฃผ์ํ๋ค.
์
๋ ฅ
์ฒซ์งธ ์ค์ V์ E๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. (2 โค V โค 400, 0 โค E โค V(V-1)) ๋ค์ E๊ฐ์ ์ค์๋ ๊ฐ๊ฐ ์ธ ๊ฐ์ ์ ์ a, b, c๊ฐ ์ฃผ์ด์ง๋ค. a๋ฒ ๋ง์์์ b๋ฒ ๋ง์๋ก ๊ฐ๋ ๊ฑฐ๋ฆฌ๊ฐ c์ธ ๋๋ก๊ฐ ์๋ค๋ ์๋ฏธ์ด๋ค. (a โ b์์ ์ฃผ์) ๊ฑฐ๋ฆฌ๋ 10,000 ์ดํ์ ์์ฐ์์ด๋ค. (a, b) ์์ด ๊ฐ์ ๋๋ก๊ฐ ์ฌ๋ฌ ๋ฒ ์ฃผ์ด์ง์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต์ ์ฌ์ดํด์ ๋๋ก ๊ธธ์ด์ ํฉ์ ์ถ๋ ฅํ๋ค. ์ด๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
์์ ์
๋ ฅ 1
3 4
1 2 1
3 2 1
1 3 5
2 3 2
์์ ์ถ๋ ฅ 1
3
'''
import sys
INF = 987654321
v, e = map(int, sys.stdin.readline().split())
min_distance = [ [INF] * v for _ in range(v)]
for _ in range(e):
a, b, c = map(int, sys.stdin.readline().split())
min_distance[a-1][b-1] = c
for k in range(v):
for i in range(v):
for j in range(v):
if min_distance[j][i] > min_distance[j][k] + min_distance[k][i]:
min_distance[j][i] = min_distance[j][k] + min_distance[k][i]
result = INF
for i in range(v):
result = min(result, min_distance[i][i])
if result == INF:
print('-1')
else:
print(result)