백준 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)