https://www.acmicpc.net/problem/18352
import sys
from collections import deque
input = sys.stdin.readline
n, m, k, x = map(int,input().split())
arr = [[] for _ in range(n+1)]
for _ in range(m):
a, b = map(int,input().split())
arr[a].append(b)
# 최단거리가 k인 모든 도시의 번호를 한줄에 하나씩 오름차순으로 출력
# 하나도 없으면 -1
dist = [-1] * (n+1)
dist[x] = 0
q = deque([x])
while q:
node = q.popleft()
for nxt in arr[node]:
if dist[nxt] == -1: # 아직 방문하지 않은 경우
dist[nxt] = dist[node] + 1
q.append(nxt)
found = False
for i in range(1, n+1):
if dist[i] == k: # 최단거리가 k인 도시인가?
print(i)
found = True
if not found:
print(-1)
'백준' 카테고리의 다른 글
백준 27961. 고양이는 많을수록 좋다 (0) | 2024.11.09 |
---|---|
백준 1461. 도서관 (0) | 2024.11.07 |
백준 1253. 좋다 (0) | 2024.11.06 |
백준 4485. 녹색 옷 입은 애가 젤다지? (0) | 2024.11.04 |
백준 1865. 웜홀 (0) | 2024.11.03 |