문제 출처 : https://www.acmicpc.net/problem/1260
from collections import deque
N, M, s = map(int,input().split())
MAP = [[] for _ in range(N+1)]
for i in range(M):
start, end = map(int, input().split())
MAP[start].append(end)
MAP[end].append(start)
MAP[start].sort()
MAP[end].sort()
def bfs(MAP, start, visited):
q = deque([start])
visited[start] = True
while q:
n = q.popleft()
print(n, end=" ")
for atr in MAP[n]:
if visited[atr] == False:
q.append(atr)
visited[atr] = True
def dfs(MAP, start, visited):
visited[start] = True
print(start, end=" ")
for atr in MAP[start]:
if visited[atr] == False:
dfs(MAP, atr, visited)
visited = [False] * (N+1)
dfs(MAP, s, visited)
print()
visited = [False] * (N+1)
bfs(MAP, s, visited)
사실 가장 기초이고 코드가 알고리즘 그 자체라 풀이할 부분이 따로 없다,, 어쨋든 기초는 중요하니까 (도장 쾅쾅쾅) 잘 알아두자.