첫번째 코드
벨만-포드 알고리즘을 반대로 생각하는 문제이다.
벨만-포드 자체에 익숙하지 않지만 반대로 하라고 하니 더 정신이 없다...
코드는 책을 참고했다!
그래도 전반적인 개념에 대한 코드와 적응하고 있다!
꼭 다시 풀어봐야하는 문제이다!!
import sys
input = sys.stdin.readline
n, scity, ecity, m = map(int, input().split())
A = []
distance = [-sys.maxsize] * n
for i in range(m):
s, e, p = map(int, input().split())
A.append((s, e, p))
money = list(map(int, input().split()))
distance[scity] = money[scity]
for i in range(n + 101):
for s, e, p in A:
if distance[s] == -sys.maxsize:
continue
elif distance[s] == sys.maxsize:
distance[e] = sys.maxsize
elif distance[e] < distance[s] + money[e] - p:
distance[e] = distance[s] + money[e] - p
if i >= n-1:
distance[e] = sys.maxsize
if distance[ecity] == -sys.maxsize:
print('gg')
elif distance[ecity] == sys.maxsize:
print("Gee")
else:
print(distance[ecity])
통과!
링크
programmers/백준/Platinum/1219. 오민식의 고민 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
062 경로 찾기 (0) | 2024.07.16 |
---|---|
059 타임머신 (0) | 2024.07.11 |
058 K번째 최단경로 찾기 (0) | 2024.07.09 |
057 최소비용 구하기 (0) | 2024.07.09 |
055 임계경로 (0) | 2024.07.04 |