첫번째 코드
벨만-포드는 음수가 가능하고
사이클이 있는 경우 확인이 가능하다.
뭔가 다익스트라와 비슷한 유형의 문제라고 느꼈는데
위의 경우를 제외하고 언제 사용하는게 더 효율적인지는 잘 모르겠다!
코드는 책을 참고했는데
여전히 어렵고 다음에 꼭 다시 풀어야겠다...
문제가 어려워서 그런가 점점 그냥 따라쓰는 기분...
import sys
from collections import deque
input = sys.stdin.readline
n, m = map(int, input().split())
A = []
distance = [sys.maxsize] * (n+1)
for i in range(m):
s, e, t = map(int, input().split())
A.append((s, e, t))
distance[1] = 0
for _ in range(n-1):
for s, e, t in A:
if distance[s] != sys.maxsize and distance[e] > distance[s] + t:
distance[e] = distance[s] + t
cycle = False
for s, e, t in A:
if distance[s] != sys.maxsize and distance[e] > distance[s] + t:
cycle = True
if not cycle:
for i in range(2, n+1):
if distance[i] != sys.maxsize:
print(distance[i])
else:
print(-1)
else:
print(-1)
통과!
링크
programmers/백준/Gold/11657. 타임머신 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
061 플로이드 (0) | 2024.07.16 |
---|---|
062 경로 찾기 (0) | 2024.07.16 |
060 오민식의 고민 (0) | 2024.07.11 |
058 K번째 최단경로 찾기 (0) | 2024.07.09 |
057 최소비용 구하기 (0) | 2024.07.09 |