[백준] 1753번 최단경로

JaeYeop·2022년 4월 6일
0

백준

목록 보기
4/19

[문제]

https://www.acmicpc.net/problem/1753

[코드]

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

v, e = map(int, input().split())
k = int(input())
graph = [[] for i in range(v + 1)]
distance = [INF] * (v + 1)
for i in range(e):
    u, v, w = map(int, input().split())
    graph[u].append([v, w])


def dijkstra(start):
    heap = []

    heapq.heappush(heap, [0, start])
    distance[start] = 0
    while heap:
        dist, now = heapq.heappop(heap)
        if distance[now] < dist:
            continue
        for i in graph[now]:
            cost = i[1] + dist
            if cost < distance[i[0]]:
                distance[i[0]] = cost
                heapq.heappush(heap, [cost, i[0]])


dijkstra(k)

for i in range(1, len(distance)):
    if distance[i] == INF:
        print('INF')
    else:
        print(distance[i])

[풀이]

전형적인 다익스트라 문제다. 주의할 점은 input = sys.stdin.readline 을 통해서 시간을 줄여야 된다는 점!

profile
이게 왜 틀리지... (나의 메모용 블로그)

0개의 댓글