DFS와 BFS
풀이 계획
- DFS, BFS 둘 다 구현해서 각자 결과 출력하기
input = sys.stdin.readline
from collections import deque
sys.setrecursionlimit(10**8)
def dfs(graph, start, visited):
visited[start] = True
dfs_ans.append(start)
for i in graph[start]:
if not visited[i]:
dfs(graph, i, visited)
def bfs(graph, start, visited):
queue = deque([start])
visited[start] = True
while queue:
v = queue.popleft()
for i in graph[v]:
if not visited[i]:
visited[i] = True
queue.append(i)
bfs_ans.append(i)
# 입력 받기
n, m, start = map(int, input().split())
graph = [[] for _ in range(n + 1)]
dfs_visited = [False for _ in range(n + 1)]
bfs_visited = [False for _ in range(n + 1)]
dfs_ans = []
bfs_ans = [start]
for _ in range(m):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)
for i in graph:
i.sort()
dfs(graph, start, dfs_visited)
print(dfs_ans[0], end="")
for i in dfs_ans[1:]:
print("", i, end="")
bfs(graph, start, bfs_visited)
print()
print(bfs_ans[0], end="")
for i in bfs_ans[1:]:
print("", i, end="")
- 두 탐색을 동시에 구현하다보니 변수명에 신경써야했음