[๋ฐฑ์ค€-5972] ํƒ๋ฐฐ ๋ฐฐ์†ก / Python

๐Ÿ“š Problem Solving/Baekjoon

 

5972๋ฒˆ: ํƒ๋ฐฐ ๋ฐฐ์†ก

๋†๋ถ€ ํ˜„์„œ๋Š” ๋†๋ถ€ ์ฐฌํ™์ด์—๊ฒŒ ํƒ๋ฐฐ๋ฅผ ๋ฐฐ๋‹ฌํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ, ๊ฐˆ ์ค€๋น„๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ‰ํ™”๋กญ๊ฒŒ ๊ฐ€๋ ค๋ฉด ๊ฐ€๋Š” ๊ธธ์— ๋งŒ๋‚˜๋Š” ๋ชจ๋“  ์†Œ๋“ค์—๊ฒŒ ๋ง›์žˆ๋Š” ์—ฌ๋ฌผ์„ ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ˜„์„œ๋Š”

www.acmicpc.net

import sys
import heapq

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

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

for _ in range(m):
    a, b, c = map(int, input().split())
    graph[a].append((b, c))
    graph[b].append((a, c))


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


dijkstra(1)

print(distance[-1])

 

ํ•ด์„ค

์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜(๋‹ค์ต์ŠคํŠธ๋ผ)์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค.