백준 18352와 동일한 문제
- 링크
1~ N 도시, M개 단방향 도로 존재
특정 도시 X에서 출발 , 최단 거리가 정확히 K인 도시들의 번호를 출력하는 프로그램을 작성
X에서 X로 가는 최단 거리는 항상 0
입력
출력
## 입력
N, M, K, X = map(int, input().split())
graph = [[] for _ in range(N+1)] # 그래프 만들기
distance = [-1]*(N+1) # 최단 거리 리스트
for _ in range(M):
a, b = map(int, input().split())
graph[a].append(b) # 그래프 입력
from collections import deque
def BFS(start): # BFS
q = deque()
q.append(start)
distance[start] = 0 # Start -> Start 거리는 0
while q :
cur = q.popleft()
for i in graph[cur]:
if distance[i] == -1: # 미방문이면,
distance[i] = distance[cur] + 1 # 인접노드 거리 = 현재거리 + 1
q.append(i)
BFS(X) # BFS 실행
possible = False
for idx, value in enumerate(distance):
if value == K: # 최단거리가 K이면
print(idx) # 노드번호 출력
possible = True # 최단거리K에 해당하는 노드가 있는지 확인
if possible == False: # K에 해당하는 노드 없으면, -1
print(-1)