코딩테스트
[백준][파이썬]18352번: 특정 거리의 도시 찾기
과아아앙
2021. 5. 18. 20:43
문제 출처 : https://www.acmicpc.net/problem/18352
내 풀이
import sys
import heapq
input = sys.stdin.readline
INF = int(1e9)
n, m, k, x = map(int, input().split())
graph = [[] for i in range(n + 1)]
distance = [INF] * (n + 1)
check = -1
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
def dijkstra(start):
q = []
heapq.heappush(q, (0, start))
distance[start] = 0
while q:
dist, now = heapq.heappop(q)
if distance[now] < dist:
continue
for i in graph[now]:
cost = dist + 1
if cost < distance[i]:
distance[i] = cost
heapq.heappush(q, (cost, i))
dijkstra(x)
for i in range(1, n + 1):
if distance[i] == k:
print(i)
check = 1
if check == -1:
print(check)
설명
다익스트라 최단 거리 문제이다.
반복문을 돌면서 위치값과 거리를 갱신해가며 지정한 시작점에서부터 갈 수 있는 모든 경로에 최단 거리를 집어넣는다.