728x90
반응형

www.acmicpc.net/problem/18352

 

18352번: 특정 거리의 도시 찾기

첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개

www.acmicpc.net

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

+ Recent posts