2차원 매트릭스로 푸는 DFS/BFS
from collections import deque
n, m, v = map(int, input().split())
matrix = [[0] * (n+1) for i in range(n+1)]
for i in range(m):
a, b = map(int, input().split())
matrix[a][b] = matrix[b][a] = 1
visit_list = [0] * (n+1)
def dfs(num):
visit_list[num] = 1
print(num, end = ' ')
for i in range(1, n+1):
if (visit_list[i] == 0 and matrix[num][i] == 1):
dfs(i)
def bfs(num):
queue = deque([num])
visit_list[num] = 0
while queue:
num = queue.popleft()
print(num, end = ' ')
for i in range(1, n+1):
if (visit_list[i] == 1 and matrix[num][i] == 1):
queue.append(i)
visit_list[i] = 0
dfs(v)
print()
bfs(v)