Koala - 12기/코딩테스트 준비 스터디

[백준/Python] 5972번 : 택배 배송

devhex 2023. 11. 11. 18:16

문제

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


풀이

택배 배송 문제, 여물을 헛간인 1에서 헛간 N으로 배달하는 것은 여러가지 그래프를 활용하여 풀 수 있다.
그중 가는 길의 길이는 고려하지 않으므로, 다익스트라를 활용하여 풀 수 있다.
입력에 대한 그래프를 구성하는 과정에서, 해당 문제는 간선에 대해 방향을 따지지 않는 무향 그래프 이므로, 입력 시에 양쪽 출력 노드에 대해 값을 추가해주어야 한다.


코드

import heapq

INF = int(1e9)
N,M = map(int, input().split())

graph = [[] * (N+1) 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[N])