https://www.acmicpc.net/problem/18352
떠올리는데로 BFS를 시도하면 된다.
import sys
from collections import deque
input = sys.stdin.readline
cityCnt, roadCnt, dist, start = map(int, input().split())
roadList = [[] for _ in range(cityCnt + 1)]
visited = [-1] * (cityCnt + 1)
for i in range(roadCnt):
go, arrive = map(int, input().split())
roadList[go].append(arrive)
def BFS(strValue):
queue = deque()
queue.append(strValue)
while queue:
item = queue.popleft()
if(visited[item[0]] != -1):
continue
visited[item[0]] = item[1]
for nextItem in roadList[item[0]]:
queue.append([nextItem, item[1] + 1])
BFS([start, 0])
isHave = False
for i in range(1, cityCnt + 1):
if(visited[i] == dist):
print(i)
isHave = True
if not isHave:
print("-1")
'문제풀이' 카테고리의 다른 글
[PY] <!> 1432 : 그래프 수정 (0) | 2025.04.02 |
---|---|
[PY] 2294 : 동전 2 (1) | 2025.04.01 |
[PY] 14888 : 연산자 끼워넣기 (0) | 2025.04.01 |
[PY] <!> 1707 : 이분 그래프 (0) | 2025.04.01 |
[PY] 7569 : 토마토 (0) | 2025.04.01 |