본문 바로가기

컴퓨터/코테

백준 11657 타임머신

INF = int(1e9)
def solution() :
    for i in range(node):
        for s,e,v in edgeArr:
            if dist[s] != INF and dist[e] > dist[s] + v :
                dist[e] = dist[s] + v
                if i == node-1:
                    return True
    return False

node, edge = map(int, input().split())
edgeArr = []
dist = [INF] * (node + 1)
dist[1] = 0

for i in range(edge) :
    edgeArr.append(list(map(int,input().split())))

if solution() :
    print(-1)
else :
    for i in range(2, node+1):
        if dist[i] == INF:
            print(-1)
        else :
            print(dist[i])

음수 사이클을 찾아야 하기에 벨만 포드로 푸는 문제이다.

아무생각없이 워셜 플로이드로 해봤다가 바로 타임아웃ㅎ

'컴퓨터 > 코테' 카테고리의 다른 글

백준 2042 세그먼트 트리  (0) 2021.09.01
백준 17114 - 미세먼지 확산  (0) 2021.08.30
카카오 기출 - 카드 뒤집기  (0) 2021.08.27
카카오 기출 - 표편집  (0) 2021.08.27
백준 2156 - 포도주 [dp]  (0) 2021.08.26