dfs(너비 우선 탐색), bfs(깊이 우선 탐색)에 대한 기본적인 문제
from collections import deque
# 스택 이용
def dfs(v):
print(v, end=" ")
visited[v] = True
for e in adj[v]:
if not(visited[e]):
dfs(e)
# 큐 이용
def bfs(v):
visited = [False] * (N+1)
q = deque()
q.append(v)
visited[v] = True
while q: # if q not empty
v = q.popleft()
print(v, end=" ")
for e in adj[v]:
if not (visited[e]):
visited[e] = True
q.append(e)
# N = 정점의 개수, M = 간선의 개수, V = 시작할 정점번호
N, M, START = map(int, input().strip().split())
adj = [[] for _ in range(N+1)]
visited = [False] * (N+1)
for _ in range(M):
u, v = map(int, input().strip().split())
adj[u].append(v)
adj[v].append(u)
for e in adj:
e.sort()
dfs(START)
print()
bfs(START)