본문 바로가기
  • KEEP HUSTLE!
파이썬 코테 준비

[백준 11657] 타임머신 - Python(파이썬)

by 하수군 2021. 3. 11.
import sys


def solution():
    check = [float('inf')] * (N + 1)
    check[1] = 0
    for n in range(1, N+1):
        for i in range(1, N+1):
            if check[i] == float('inf'):
                continue
            for k, l in dist[i].items():
                l += check[i]
                if check[k] > l:
                    if n == N:
                        return [-1]
                    check[k] = l

    return check[2:]


N, M = map(int, sys.stdin.readline().split())
dist = {i: {} for i in range(1, N+1)}

for _ in range(M):
    a, b, c = map(int, sys.stdin.readline().split())
    if b in dist[a]:
        dist[a][b] = min(dist[a][b], c)
    else:
        dist[a][b] = c

for ans in solution():
    if ans == float('inf'):
        print(-1)
    else:
        print(ans)

댓글