알고리즘 문제풀이
세부 (백준 13905)
wiojfe
2023. 8. 6. 22:49
목적지에 도달하는 경로 중에서 최소 가중치를 찾으면 된다. MST를 적용하되 목적지에 도달하는 최대의 길들만 찾아서
그 중 최소의 값을 찾으면 된다.
import sys
import heapq
input =sys.stdin.readline
n,m = map(int, input().split())
start, end = map(int, input().split())
visited= [0 for i in range(n+1)]
visited[0] = 1
gra = [[]for _ in range(n+1)]
for i in range(m):
a,b,c =map(int ,input().split())
gra[a].append((b,c))
gra[b].append((a,c))
ans =int(1e9)
def prim(start):
global ans
q = [[0,start,start]]
heapq.heapify(q)
while q :
cost, now, prev = heapq.heappop(q)
if visited[now] ==0 :
visited[now] = prev
# ans += ((-1)*cost)
for nextnode,nextcost in gra[now] :
if visited[nextnode] ==0 :
neg = (-1)*nextcost
heapq.heappush(q, (neg, nextnode,now))
prim(start)
if visited[end]==0 :
print(0)
exit()
while True :
before = visited[end]
if before == end :
break
for a,b in gra[end] :
if a == before :
ans = min(ans, b)
# ans = min(ans, gra[before][end])
end = before
print(ans)