[python] 백준 18352 특정

https://www.acmicpc.net/problem/18352

문제를 해결하다

  • 주어진 지점에 도달하기 위해 k의 최소 거리로 지점을 찾는 문제(DFS와 BFS 모두 가능하지만 거리가 고정되어 있으므로 BFS를 사용하여 위도별로 찾는 것이 좋습니다!)
  • 일방통행이 아니니 참고하세요!

암호

import sys
from collections import deque
input = sys.stdin.readline

n, m, k, x = map(int, input().split())
graph = (() for _ in range(n+1))


ans = ()
visited = (-1 for _ in range(n+1))

for _ in range(m):
    a, b = map(int, input().split())
    graph(a).append(b)


def bfs(v):
    queue = deque()
    queue.append(v)
    visited(v) += 1
    while queue:
        now = queue.popleft()
        for next in graph(now):
            if visited(next) == -1:
                visited(next) = visited(now) + 1
                queue.append(next)
bfs(x)
for i in range(n+1):
    if visited(i) == k:
        print(i)
        ans.append(i)
if len(ans)==0:
    print(-1)