[Python] 백준 18352번 특정 거리의 도시 찾기

Weirdo·2022년 11월 18일
0

최단거리를 구하는 문제이다.
BFS 알고리즘을 적용해보았다.

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

n, m, k, x = map(int, f().split())
graph = [[] for _ in range(n+1)]
d = [0 for _ in range(n+1)]
visited = [False for _ in range(n+1)]
ans = []

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

def bfs(x):
    queue = deque()
    queue.append(x)
    visited[x] = True
    while queue:
        s = queue.popleft()
        if d[s] > k:
            break
        for i in graph[s]:
            if visited[i] == False:
                visited[i] = True 
                queue.append(i)
                d[i] = d[s] + 1
            
                if d[i] == k:
                    ans.append(i)
    
bfs(x)

if len(ans) == 0:
    print(-1)
else:
    for r in sorted(ans):
        print(r)
profile
Yeah, weirdos change the world

0개의 댓글