백준 1260 - DFS와 BFS (파이썬)

Updated:

Answer

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

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

matrix = [[0] * (N + 1) for _ in range(N + 1)]
visited_list = [0] * (N + 1)

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

def dfs(v):
    visited_list[v] = 1
    print(v, end = ' ')

    for i in range(1, N + 1):
        if visited_list[i] == 0 and matrix[v][i] == 1:
            dfs(i)

def bfs(v):
    queue = deque([v])
    visited_list[v] = 0

    while queue:
        v = queue.popleft()
        print(v, end = ' ')

        for i in range(1, N + 1):
            if visited_list[i] == 1 and matrix[v][i] == 1:
                queue.append(i)
                visited_list[i] = 0

dfs(V)
print()
bfs(V)

Categories:

Updated: