💡문제접근
- DFS와 BFS 알고리즘을 공부할 수 있는 가장 기본적인 문제였다.
BFS
는 큐
를 이용해서 DFS
는 재귀
개념을 이용한다.
💡코드(메모리 : 34148KB, 시간 : 1620ms)
from collections import deque
import sys
input = sys.stdin.readline
def DFS(graph, v, visited):
visited[v] = True
print(v, end = " ")
for i in graph[v]:
if not visited[i]:
DFS(graph, i, visited)
def BFS(graph, v, visited):
queue = deque([v])
visited[v] = True
while queue:
v = queue.popleft()
print(v, end = " ")
for i in graph[v]:
if not visited[i]:
queue.append(i)
visited[i] = True
N, M, V = map(int, input().split())
graph = [[] for _ in range(N+1)]
for _ in range(M):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
for i in range(N+1):
graph[i].sort()
visited = [False] * (N+1)
DFS(graph, V, visited)
print()
visited = [False] * (N+1)
BFS(graph, V, visited)
💡소요시간 : 15m