Skip to content
CatBus
Go back

[BOJ] 알고리즘 수업 - 너비 우선 탐색 3 - 24446 (S2)

시간 제한메모리 제한
1 초512 MB

문제

BFS를 수행하면서 각 노드의 깊이를 구하는 문제이다.

풀이

BFS 문제이다. 깊이 정보를 함께 저장한다.

코드

import sys
from collections import deque

input = sys.stdin.readline

N, M, R = map(int, input().split())

graph = [[] for _ in range(N + 1)]
for _ in range(M):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

def bfs(start):
    q = deque([(start, 0)])
    visited = [-1] * (N + 1)
    visited[start] = 0
    
    while q:
        cur_node, d = q.popleft()
        for n_node in graph[cur_node]:
            if visited[n_node] != -1:
                continue
            visited[n_node] = d + 1
            q.append((n_node, d + 1))

    return visited[1:]

print(*bfs(R), sep='\n')

시간 복잡도

O(N + M)


Share this post:

비슷한 글

24446이 글

본문을 Xenova/multilingual-e5-small 로 임베딩하고, 그 벡터를 PCA 로 32축에 눌러 왼쪽 막대로 그렸습니다. 비슷한 글은 지문도 닮습니다 — 위아래를 견줘 보세요. 계산은 빌드 때 끝나고 벡터는 브라우저로 오지 않습니다.

Previous Post
[BOJ] 피자 굽기 - 1756 (G5)
Next Post
[BOJ] 카드 바꾸기 - 25401 (G5)