관리 메뉴

서랍장

백준 solv4(#1504) 본문

algorithm

백준 solv4(#1504)

소소한 프로그래머 2021. 4. 3. 22:28
import sys
import heapq


def dijk(v, r, x):
    r[x-1] = 0
    que = []
    heapq.heappush(que, (r[x-1], r.index(r[x-1])))

    while que:
        vertex, index = heapq.heappop(que)
        if r[index] < vertex:
            continue
        else:
            for x, y in v[index+1].items():
                weight = y + vertex
                if r[x-1] >= weight:
                    r[x-1] = weight
                    heapq.heappush(que, (r[x-1], x-1))

input = sys.stdin.readline
INF = sys.maxsize
N, M, X = map(int, input().split())
village = {}
re_village = {}
result = [INF for _ in range(N)]
re_result = [INF for _ in range(N)]
for i in range(1, N+1):
    village[i] = {}
    re_village[i] = {}
for _ in range(M):
    u, v, w = map(int, input().split())
    village[u][v] = w
    re_village[v][u] = w  #key key value

dijk(village, result, X)
dijk(re_village, re_result, X)

for i in range(len(result)):
    result[i] += re_result[i]
print(max(result))

 

'algorithm' 카테고리의 다른 글

leetcode 1060, 1901  (0) 2022.10.26
leetcode 1662  (0) 2022.10.25
leetcode 189  (0) 2022.10.25
leetcode 1239  (0) 2022.10.24
binary search 이분 탐색  (0) 2022.10.23
Comments