๐๏ธ Algorithm/๐ฉ ๋ฐฑ์ค
๐ฉ [๋ฐฑ์ค] [Python] [Gold5] 1916๋ฒ_์ต์๋น์ฉ ๊ตฌํ๊ธฐ
Dbswnstjd
2023. 4. 27. 14:23
๋ฌธ์
https://www.acmicpc.net/problem/1916
1916๋ฒ: ์ต์๋น์ฉ ๊ตฌํ๊ธฐ
์ฒซ์งธ ์ค์ ๋์์ ๊ฐ์ N(1 ≤ N ≤ 1,000)์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ ๋ฒ์ค์ ๊ฐ์ M(1 ≤ M ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์งธ ์ค๋ถํฐ M+2์ค๊น์ง ๋ค์๊ณผ ๊ฐ์ ๋ฒ์ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๋จผ์ ์ฒ์์๋ ๊ทธ
www.acmicpc.net
ํ์ด
# ๋ฐฑ์ค 1916๋ฒ ๋ฌธ์ - ์ต์๋น์ฉ ๊ตฌํ๊ธฐ
import sys
import heapq
input = sys.stdin.readline
n, m= int(input()), int(input())
graph = [[] for _ in range(n+1)]
INF = 1e9
distance = [INF] * (n+1)
for _ in range(m):
a, b, c = map(int, input().split())
graph[a].append((b,c))
start, end = map(int, input().split())
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(start)
print(distance[end])
์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ๋ ์ฌ์ฉํ๋ ๋ค ์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์๋ค.
์ฒ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํด์ ๊ตฌ๊ธ๋ง์ ํด๋ดค๋๋ฐ ์ฝ๋๊ฐ ๋๊ฐ์๋ค. ๊ทธ๋์ sys ๋ชจ๋์ ์ฌ์ฉํ์๋๋ ํต๊ณผ๋์๋ค.
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด๋ณด๋๋ก ํด์ผ๊ฒ ๋ค.