728x90
1) 문제
2) 코드
from collections import deque
# 정보 받기
n, m, k, x = map(int, input().split())
graph = [[] for _ in range(n+1)]
# 도로 정보 받기
# 각 지점에서 연결 된 곳 정보 받기
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
# 모든 도시 최단 거리 초기화
distance = [False] * (n+1)
# 출발 도시까지의 거리는 0으로 설정
distance[x] = 0
# bfs 수행
q = deque([x])
while q:
# q의 맨 왼쪽 값 now에 넣기
now = q.popleft()
# 현재 도시에서 이동할 수 있는 모든 도시를 확인
for next_node in graph[now]:
# 아직 방문하지 않은 도시라면
if distance[next_node] == False:
# 최단 거리 갱신
distance[next_node] = distance[now] + 1
q.append(next_node)
# 최단 거리가 k인 모든 도시의 번호를 오름차순으로 출력
check = False
for i in range(1, n+1):
if distance[i] == k:
print(i)
check = True
# 만약 최단 거리가 k 인 도시가 없다면, -1 출력
if check == False:
print(-1)
'CS > Coding Test' 카테고리의 다른 글
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 14 정렬 문제 - Q23 국영수 (0) | 2022.04.05 |
---|---|
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 13 DFS/BFS 문제 - Q16 연구소 (0) | 2022.03.30 |
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 11 그리디 문제 - Q4 만들 수 없는 금액 (0) | 2022.03.16 |
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 11 그리디 문제 - Q3 문자열 뒤집기 (0) | 2022.03.16 |
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 11 그리디 문제 - Q2 곱하기 혹은 더하기 (0) | 2022.03.16 |