문제 풀이/99클럽
99클럽 코테 스터디 TIL 11일차
동까의 코딩
2025. 2. 7. 10:38
반응형
https://www.acmicpc.net/problem/1738
벨만포드 알고리즘에 대해 더 깊게 이해해야될 것 같다.....
아직도 모르는 게 많은 것 같다.
import sys
INF= sys.maxsize
def bellman(start):
global n
distance = [-INF]*(n+1)
distance[start]=0
route= [0]*(n+1)
result=[]
for i in range(n):
for cur_node in range(1, n+1):
if distance[cur_node]==-INF:
continue
for next_node, next_cost in graph[cur_node]:
if distance[next_node]<distance[cur_node]+next_cost:
distance[next_node]=distance[cur_node]+next_cost
route[next_node]=cur_node
if i==n-1:
distance[next_node]=INF
if distance[n]==INF:
print(-1)
return
else:
result.append(n)
while(n!=1):
result.append(route[n])
n= route[n]
result.reverse()
print(*result)
return
n,m= map(int, input().split())
graph=[[] for _ in range(n+1)]
for _ in range(m):
a,b,c= map(int, input().split())
graph[a].append((b,c))
bellman(1)
반응형