코딩테스트

BFS&DFS_심화15) 특정 거리의 도시 찾기 _ python

728x90

문제 링크

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

 

18352번: 특정 거리의 도시 찾기

첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개

www.acmicpc.net

코드

# https://www.acmicpc.net/problem/18352
from collections import deque
import sys
f = sys.stdin.readline

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

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

def bfs(start):
    answer = []
    q = deque([start])
    visited[start] = True
    distance[start] = 0
    while q:
        now = q.popleft()
        for i in graph[now]:
            if not visited[i]:
                visited[i] = True
                q.append(i)
                distance[i] = distance[now] + 1
                if distance[i] == k:
                    answer.append(i)
    if len(answer) == 0:
        print(-1)
    else:
        answer.sort()
        for i in answer:
            print(i, end='\n')

bfs(x)
728x90

'코딩테스트' 카테고리의 다른 글

BFS&DFS_심화17) 경쟁적 전염 _ python  (0) 2023.09.25
BFS&DFS_심화16) 연구소 _ python  (0) 2023.09.25
백트래킹(Backtracking)  (1) 2023.09.25
3주차 - DFS/BFS  (0) 2023.09.25
구현_심화13) 치킨 배달 _ python  (0) 2023.09.25