https://www.acmicpc.net/problem/1260

여기서의 하이라이트는 간선리스트를 인접리스트로 변환하는 것.
for v1, v2 in edge_list:
graph[v1].append(v2)
graph[v2].append(v1)
from collections import deque
n, m, v = map(int, input().split())
edge_list = []
for _ in range(m):
v1, v2 = map(int, input().split())
edge_list.append([v1, v2])
# 인접 리스트 초기화
graph = [[] for _ in range(n + 1)]
# 간선을 인접 리스트에 추가
for v1, v2 in edge_list:
graph[v1].append(v2)
graph[v2].append(v1) # 무방향 그래프이므로 양쪽에 추가
def dfs(visited, v, graph):
visited[v] = True
print(v, end=' ')
for i in sorted(graph[v]):
if not visited[i]:
dfs(visited, i, graph)
def bfs(visited, start, graph):
queue = deque([start])
visited[start] = True
while queue:
v = queue.popleft()
print(v, end=' ')
for i in sorted(graph[v]):
if not visited[i]:
queue.append(i)
visited[i] = True
# DFS 수행
visited = [False] * (n + 1)
dfs(visited, v, graph)
print() # 줄바꿈
# BFS 수행
visited = [False] * (n + 1)
bfs(visited, v, graph)