DFS와 BFS/특정 거리의 도시 찾기

Q·2021년 8월 5일
0

알고리즘/백준

목록 보기
10/70

문제 설명


전체 코드

from collections import deque

def bfs(v):
    q = deque()
    q.append(v)
    visited[v] = 1

    while q:
        v = q.popleft()

        for i in matrix[v]:
            if visited[i] == 0:
                q.append(i)
                visited[i] = 1
                dist[i] = dist[v] + 1

n, m, k, x = map(int, input().split())

matrix = [[] for _ in range(n+1)]
visited = [0]*(n+1)
dist = [0]*(n+1)

for _ in range(m):
    a, b = map(int, input().split())
    matrix[a].append(b)
bfs(x)
result = []
for i in range(1, len(dist)):
    if dist[i] == k:
        result.append(i)
result.sort()

if len(result) == 0:
    print(-1)
else:
    for i in result:
        print(i)

해결 방법

아주 기본적인 그래프 문제로 bfs를 사용할 줄 알면 풀 수 있는 문제이다. dist라는 간선의 갯수를 세는 리스트를 하나 정의하고 x부터 bfs를 시작하여 visited[정점] == 0일때 dist[연결된 정점] = dist[연결된 다른 정점] + 1 해서 정점 x부터 bfs를 시작했을때의 간선의 갯수 dist를 구하여 그 값들 중 k와 같은 값들을 result에 append하여 결과값을 print한다.

profile
Data Engineer

0개의 댓글