728x90
반응형
https://www.acmicpc.net/problem/1916
Python
import sys
input = sys.stdin.readline
v = int(input())
e = int(input())
graph = [[] for _ in range(v+1)]
for _ in range(e):
a, b, c = map(int, input().split())
graph[a].append((b, c))
start, end = map(int, input().split())
visit = [0]*(v+1)
dist = ["INF"]*(v+1)
def di(start):
global visit, dist
dist[start] = 0
now = start
for _ in range(v):
visit[now] = 1
for x in graph[now]:
if dist[x[0]] == "INF" or dist[x[0]] > dist[now]+x[1]:
dist[x[0]] = dist[now]+x[1]
ans = [int(1e9), 0] # 전 노드에서 가장 작은 것을 찾아야함
for i in range(1, v+1):
if visit[i] == 0 and dist[i] != "INF" and ans[0] > dist[i]:
ans = [dist[i], i]
if now == ans[1]:
break
now = ans[1]
#print(dist, visit, now)
di(start)
print(dist[end])
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준][Python] 2096번 내려가기 - DP (0) | 2021.08.26 |
---|---|
[Python] 그래프 최단경로 알고리즘 정리 (0) | 2021.08.23 |
[백준][Python] 1753번 최단경로 - 그래프, 최소힙 (0) | 2021.08.23 |
[백준][Python] 1504번 특정한 최단경로 - 그래프, BFS (0) | 2021.08.19 |
[백준][Python] 1931번 회의실 배정 - DP (0) | 2021.08.16 |