백준(1865) - 웜홀 Python

최대 1 분 소요

백준(1865) - 웜홀

문제풀이: Bellman Ford 알고리즘, 파이썬

import sys
INF = int(1e9)
input = sys.stdin.readline

testcase = int(input())

def bellman():
    for i in range(1, n+1):
        for j in range(1, n+1):
            for now, cost in graph[j]:
                if distance[now] > cost + distance[j]:
                    distance[now] = cost + distance[j]
                    if i == n:
                        return False
    return True


for _ in range(testcase):
    n, m, w = map(int, input().split())
    graph = [[] for _ in range(n+1)]
    distance = [INF] * (n+1)

    for i in range(m):
        start, end, time = map(int, input().split())
        graph[start].append((end, time))
        graph[end].append((start, time))

    for i in range(w):
        start, end, time = map(int, input().split())
        graph[end].append((start, -time))

    answer = bellman()
    print("NO" if answer else "YES")

댓글남기기