백준 온라인저지 DFS와 BFS
문제풀러 바로가기👇👇👇👇👇👇
문제풀이
from collections import deque
# 입력받기
n, m, v = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
# 정렬진행
for i in range(1, n+1):
graph[i].sort()
visit = [False] * (n+1)
def dfs(graph, visited, v):
visited[v] = True
print(v, end=" ")
for i in graph[v]:
if not visited[i]:
dfs(graph, visited, i)
def bfs(graph, visited, v):
queue = deque()
queue.append(v)
visited[v] = True
while queue:
value = queue.popleft()
print(value, end=" ")
for i in graph[value]:
if not visited[i]:
visited[i] = True
queue.append(i)
dfs(graph, visit, v)
visit = [False] * (n+1)
print()
bfs(graph, visit, v)
- 그냥 dfs와 bfs를 구현하기만 하면되는 문제이다.
- 숫자 순서대로 탐색을 진행하기 때문에 입력을 받은 후 정렬을 진행해야함.