Dijkstra 최단 경로 알고리즘 사용
import sys
import heapq
input=sys.stdin.readline
INF=int(1e9)
# 도시의 개수, 도로의 개수, 거리 정보, 출발 도시
n, m, k, x = map(int, input().split())
graph = [[] for _ in range(n+1)]
distance = [INF]*(n+1)
for _ in range(m):
a, b= map(int, input().split())
# a에서 부터 b까지 가는 거리는 1
graph[a].append((b, 1))
def dijkstra(start):
q = []
heapq.heappush(q, (0, start))
distance[start] = 0
while q:
dist, now = heapq.heappop(q)
if distance[now] < dist:
continue
else:
for i in graph[now]:
cost = dist + i[1]
if cost < distance[i[0]]:
distance[i[0]] = cost
heapq.heappush(q, (cost, i[0]))
dijkstra(x)
flag=0
for i in range(1, n+1):
if distance[i]==k:
flag+=1
print(i)
if flag==0:
print(-1)
'코딩 테스트 > 문제 풀기' 카테고리의 다른 글
[프로그래머스] 게임 맵 최단거리 (0) | 2021.03.15 |
---|---|
[프로그래머스] 땅따먹기 (0) | 2021.03.11 |
[프로그래머스] 다음 큰 숫자 (0) | 2021.03.11 |
[백준 9095] 1,2,3 더하기 (0) | 2021.02.28 |
[백준 2839] 설탕 배달 (0) | 2021.02.22 |
댓글