728x90
반응형
import heapq
import sys
input = sys.stdin.readline
n, m, k, x = map(int,input().split())
# 도시 도로 거리 출발 도시
graph = [ [] for _ in range(n+1) ]
for i in range(m):
a, b= map(int, input().split())
graph[a].append(b)
# x에서 출발, 경로가 k 인 도시 오름차순 출력 없으면 -1
def dij(start):
q = []
heapq.heappush(q, (0,start))
dist = [1e9]*(n+1)
dist[start]=0
while q:
d, now = heapq.heappop(q)
if dist[now]<d : continue
for i in graph[now]:
cost = d + 1
if cost<dist[i]:
dist[i] = cost
heapq.heappush(q, (cost,i))
return dist
result = dij(x)
answer = []
for i in range(n+1) :
if result[i] == k :
answer.append(i)
if answer == [] : print(-1)
else:
answer.sort()
for i in answer: print(i)
728x90
반응형
'백준 > 최단경로' 카테고리의 다른 글
# 1238 파티 (0) | 2021.04.10 |
---|---|
# 1504 특정한 최단 경로 (0) | 2021.04.10 |
# 1916 최소비용 구하기 파이썬 (0) | 2021.04.09 |
# 1753 최단 경로 파이썬 (0) | 2021.04.09 |