https://www.acmicpc.net/problem/1753
1753๋ฒ: ์ต๋จ๊ฒฝ๋ก
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ V์ ๊ฐ์ ์ ๊ฐ์ E๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) ๋ชจ๋ ์ ์ ์๋ 1๋ถํฐ V๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ๋์งธ ์ค์๋ ์์ ์ ์ ์ ๋ฒํธ K(1 ≤ K ≤ V)๊ฐ
www.acmicpc.net
๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์์ฐ์๋ก ์ฃผ์ด์ก์ผ๋ฏ๋ก, ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๋ค.
์ ๋ ฅ๊ฐ์ผ๋ก ์ฃผ์ด์ง๋ ์ ์ ์ ๊ฐ์์ ๊ฐ์ ์ ์๊ฐ ๋งค์ฐ ๋ง์ผ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๊ฐ ๋ฎ์ ์ฐ์ ์์ํ๋ฅผ ํ์ฉํ์ฌ ๊ตฌํํ๋ค.
https://catromi.tistory.com/65
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ (python)
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ (Dijkstra Algorithm) -ํน์ ๋ ธ๋์์ ์ถ๋ฐํ์ฌ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๊น์ง ๊ฐ ์ ์๋ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐ -๋งค ์ํฉ์์ ๊ฐ์ฅ ๋น์ฉ์ด ์ ๊ฒ ๋๋ ๋ ธ๋๋ฅผ ์ ํํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค (๊ทธ๋ฆฌ๋
catromi.tistory.com
์ด๊ฑฐ ๊ทธ๋๋ก ํด์ ๊ฒฐ๊ณผ๊ฐ๋ง ์ถ๋ ฅํ๋ฉด ๋๋ ์์ฃผ์์ฃผ ๊ฐ๋จํ ๋ฌธ์ !
import sys
import heapq
input = sys.stdin.readline
INF = int(1e9)
v,e = map(int,input().split())
k = int(input())
graph=[[] for _ in range(v+1)]
for _ in range(e):
a,b,c = map(int,input().split())
graph[a].append((b,c))
distance = [INF]*(v+1)
#์ฐ์ ์์ํ์ ์ถ๋ฐ๋
ธ๋๋ฅผ ์ฝ์
q=[]
heapq.heappush(q,(0,k))
distance[k]=0
#dijkstra
while q:
dist, cur = heapq.heappop(q)
if distance[cur] < dist:
continue
for i in graph[cur]:
cost = dist + i[1]
if cost < distance[i[0]]:
distance[i[0]] = cost
heapq.heappush(q,(cost,i[0]))
#๊ฒฐ๊ณผ ์ถ๋ ฅ
for i in range(1,v+1):
if distance[i]==INF:
print("INF")
else:
print(distance[i])
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > Shortest Path' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]18352๋ฒ: ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (0) | 2023.02.28 |
---|---|
Floyd-Warshall ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ(python) (0) | 2023.02.28 |
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ (python) (0) | 2023.02.28 |
[์ด์ฝํ ]๋ฏธ๋ ๋์ (0) | 2023.02.27 |
[์ด์ฝํ ]์ ๋ณด (0) | 2023.02.27 |