첫번째 코드
그래프와 가중치를 주면서
더한 값이 현재 값보다 작은 경우 갱신하는 다익스트라를 이용하는 문제이다.
뭔가 이해가 안되는 듯 이해가 될 것 같기도 한 느낌이다....
코드는 책을 참고했다!
import sys
input = sys.stdin.readline
from queue import PriorityQueue
V,e = map(int, input().split())
k = int(input())
distance = [sys.maxsize] * (V+1)
visited = [False] * (V+1)
A = [[] for _ in range(V+1)]
queue = PriorityQueue()
for _ in range(e):
u, v, w = map(int, input().split())
A[u].append((v, w))
queue.put((0, k))
distance[k] = 0
while queue.qsize() > 0:
now = queue.get()
c_v = now[1]
if visited[c_v]:
continue
visited[c_v] = True
for temp in A[c_v]:
next = temp[0]
weight = temp[1]
if distance[next] > distance[c_v] + weight:
distance[next] = distance[c_v] + weight
queue.put((distance[next], next))
for i in range(1, V+1):
if visited[i]:
print(distance[i])
else:
print("INF")
통과!
첫번쨰 푸는거니까 속상해하지 말고 다음에도 풀어보자!!
링크
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
057 최소비용 구하기 (0) | 2024.07.09 |
---|---|
055 임계경로 (0) | 2024.07.04 |
053 줄 세우기 (0) | 2024.07.02 |
054 임계경로 (0) | 2024.07.02 |
052 거짓말 (0) | 2024.06.27 |