깃허브:
https://github.com/MSIQOC/BOJ/blob/master/b11657_%ED%83%80%EC%9E%84%EB%A8%B8%EC%8B%A0.py
https://www.acmicpc.net/problem/11657
벨만포드 알고리즘을 써서 풀면 되는 문제이다.
키워드: x도시에서 y도시로 가는 가장 빠른 시간, [음수]인 시간 존재.
Python
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
|
#
# Created by MinSeo on 2022/02/09.
# Copyright ⓒ 2021 MinSeo Shin. All rights reserved.
#
inf = float('inf')
n, m = map(int, input().split())
edge = []
dist = [inf] * (n+1)
for i in range(m):
a, b, c = map(int, input().split())
edge.append((a, b, c))
def bellman(start):
dist[start] = 0
for v in range(n):
for i in range(m):
s = edge[i][0]
c = edge[i][2]
e = edge[i][1]
if dist[s] != inf and dist[e] > c + dist[s]:
dist[e] = c + dist[s]
if v == n-1:
return True
return False
if bellman(1):
print(-1)
else:
for i in range(2, len(dist)):
print(dist[i]) if dist[i] != inf else print(-1)
|
cs |
'백준 풀이' 카테고리의 다른 글
백준 5052 - 전화번호 목록 (Python) (0) | 2022.02.18 |
---|---|
백준 7453 - 합이 0인 네 정수 (Python) (0) | 2022.02.13 |
백준 17298 - 오큰수 (Python) (0) | 2022.02.07 |
백준 11047 - 동전0 (0) | 2021.03.28 |
백준 1149 - RGB거리 (0) | 2021.03.28 |