백준 | DFS와 BFS

jeonghens·2023년 11월 11일

알고리즘: BOJ

목록 보기
21/125

백준 DFS와 BFS


import sys
from collections import deque

def dfs(node):
    visited[node] = True
    print(node, end=" ")

    for next_node in graph[node]:
        if not visited[next_node]:
            dfs(next_node)

def bfs(node):
    queue = deque([node])
    visited[node] = True

    while queue:
        current_node = queue.popleft()
        print(current_node, end=" ")

        for next_node in graph[current_node]:
            if not visited[next_node]:
                queue.append(next_node)
                visited[next_node] = True

# 입력
n, m, v = map(int, sys.stdin.readline().split())

graph = [[] for _ in range(n + 1)]
for _ in range(m):
    x, y = map(int, sys.stdin.readline().split())

    graph[x].append(y)
    graph[y].append(x)

# 정점 번호 오름차순 정렬
for i in range(1, n + 1):
    graph[i].sort()

# 출력
visited = [False] * (n + 1)
dfs(v)

print()

visited = [False] * (n + 1)
bfs(v)
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글