728x90
https://www.acmicpc.net/problem/17396
💡 문제 풀이
기본적인 다익스트라 문제이다.
추가적으로 특정 조건에 값을 추가할지 말지 확인하는 로직만 추가하면 된다.
✔️ 느낀 점
오타 나서 한참 찾았다..
💻 코드
import heapq, sys
INF = int(1e9)
input = sys.stdin.readline
def dijkstra(start):
q = []
heapq.heappush(q, (0, start))
distance[start] = 0
while q:
currentCost, currentNode = heapq.heappop(q)
if distance[currentNode] < currentCost: continue
for nextCost, nextNode in graph[currentNode]:
newCost = currentCost + nextNode
if newCost < distance[nextCost] and wards[nextCost] == 0:
distance[nextCost] = newCost
heapq.heappush(q, (newCost, nextCost))
N, M = map(int, input().split())
distance = [INF]*(N+1)
wards = list(map(int, input().split()))
wards[-1] = 0
graph = [[] for _ in range(N+1)]
for _ in range(M):
start, end, cost = map(int, input().split())
graph[start].append((end, cost))
graph[end].append((start, cost))
dijkstra(0)
print(distance[N-1] if distance[N-1] != INF else -1)
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[Python] 백준 15686번 : 치킨 배달 (0) | 2023.02.27 |
---|---|
[Python] 백준 1520번 : 내리막 길 (0) | 2023.02.26 |
[Python] 백준 1956번 : 운동 (0) | 2023.02.23 |
[Python] 백준 2230번 : 수 고르기 (0) | 2023.02.23 |
[Python] 백준 13023번 : ABCDE (0) | 2023.02.23 |
댓글