[BOJ][๐ก3][๋ฐฑ์ค#11779] ์ต์๋น์ฉ ๊ตฌํ๊ธฐ 2
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold III
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
n(1โคnโค1,000)๊ฐ์ ๋์๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋์์์ ์ถ๋ฐํ์ฌ ๋ค๋ฅธ ๋์์ ๋์ฐฉํ๋ m(1โคmโค100,000)๊ฐ์ ๋ฒ์ค๊ฐ ์๋ค. ์ฐ๋ฆฌ๋ A๋ฒ์งธ ๋์์์ B๋ฒ์งธ ๋์๊น์ง ๊ฐ๋๋ฐ ๋๋ ๋ฒ์ค ๋น์ฉ์ ์ต์ํ ์ํค๋ ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋ฉด A๋ฒ์งธ ๋์์์ B๋ฒ์งธ ๋์ ๊น์ง ๊ฐ๋๋ฐ ๋๋ ์ต์๋น์ฉ๊ณผ ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ.ย ํญ์ ์์์ ์์ ๋์ฐฉ์ ์ผ๋ก์ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋์์ ๊ฐ์ n(1โคnโค1,000)์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ ๋ฒ์ค์ ๊ฐ์ m(1โคmโค100,000)์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์งธ ์ค๋ถํฐ m+2์ค๊น์ง ๋ค์๊ณผ ๊ฐ์ ๋ฒ์ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๋จผ์ ์ฒ์์๋ ๊ทธ ๋ฒ์ค์ ์ถ๋ฐ ๋์์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ค์์๋ ๋์ฐฉ์ง์ ๋์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๊ณ ๋ ๊ทธ ๋ฒ์ค ๋น์ฉ์ด ์ฃผ์ด์ง๋ค. ๋ฒ์ค ๋น์ฉ์ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์์ ์ ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ m+3์งธ ์ค์๋ ์ฐ๋ฆฌ๊ฐ ๊ตฌํ๊ณ ์ ํ๋ ๊ตฌ๊ฐ ์ถ๋ฐ์ ์ ๋์๋ฒํธ์ ๋์ฐฉ์ ์ ๋์๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ถ๋ฐ ๋์์์ ๋์ฐฉ ๋์๊น์ง ๊ฐ๋๋ฐ ๋๋ ์ต์ ๋น์ฉ์ ์ถ๋ ฅํ๋ค. ๋์งธ ์ค์๋ ๊ทธ๋ฌํ ์ต์ ๋น์ฉ์ ๊ฐ๋ ๊ฒฝ๋ก์ ํฌํจ๋์ด์๋ ๋์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค. ์ถ๋ฐ ๋์์ ๋์ฐฉ ๋์๋ ํฌํจํ๋ค. ์ ์งธ ์ค์๋ ์ต์ ๋น์ฉ์ ๊ฐ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐฉ๋ฌธํ๋ ๋์ ์์๋๋ก ์ถ๋ ฅํ๋ค.
์์
์ ๋ ฅ
5
8
1 2 2
1 3 3
1 4 1
1 5 10
2 4 2
3 4 1
3 5 1
4 5 3
1 5
์ถ๋ ฅ
4
3
1 3 5
My Sol
import sys
input = sys.stdin.readline
from heapq import heappop, heappush
from math import inf
n = int(input())
m = int(input())
visit = [0]*(n+1)
G = [[] for _ in range(n+1)]
D = [[inf, []] for _ in range(n+1)]
while m > 0:
s, e, w = map(int, input().split())
m -= 1
G[s].append((e, w))
S, E = map(int, input().split())
D[S][0] = 0
D[S][1] = [S]
Q = [(D[S][0], S)]
while Q:
val, u = heappop(Q)
if visit[u]: continue
visit[u] = 1
for v, w in G[u]:
if not visit[v] and D[v][0] > D[u][0]+w:
D[v][0] = D[u][0]+w
D[v][1] = D[u][1]+[v]
heappush(Q, (D[v][0], v))
print(D[E][0])
print(len(D[E][1]))
print(*D[E][1])
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ๋ ๋ฌธ์ ์๋ค. ๋ค๋ง ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ํ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ D ๋ฐฐ์ด์ ๊ธฐ์กด ์ต์๋น์ฉ๋ง ๊ธฐ๋กํ๋ ๊ฒ์ด ์๋, ์ต์๋น์ฉ์ ๊ธฐ๋กํจ๊ณผ ๋์์ ์์์ ์ผ๋ก๋ถํฐ์ ๊ฒฝ๋ก๋ฅผ ์ ์ฅํ๋ 1๋ฒ ์ธ๋ฑ์ค ๋ฐฐ์ด์ ํ๋์ฉ ์์นํ๊ฒ ํ์ฌ, ์ต์๋น์ฉ์ด ๊ฐฑ์ ๋ ๋, ๊ธฐ์ค์ ์ ๊ฒฝ๋ก์ ํ์ฌ ์ ์ ์ขํ๋ฅผ ๋ํด 1๋ฒ ์ธ๋ฑ์ค์ ๊ฐฑ์ ์ ์ฅํ๋๋ก ํ์๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ