# 1. 그래프 생성
# 2. dfs 생성
# 3. bfs 생성
#. dfs 출력 후 bfs 출력
def dfs(g,v,visited) :
visited[v] = True
print(v, end =' ')
for i in graph[v]:
if not visited[i] :
dfs(g, i, visited)
from collections import deque
def bfs(g, start, visited):
queue = deque([start])
visited[start] = 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 i in range(m):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
graph[a].sort()
graph[b].sort()
visited = [False] * (n+1)
dfs(graph, v, visited)
print("")
visited = [False] * (n+1)
bfs(graph, v, visited)
O(N+M)
입력시 그래프 sort를 시켜주지 않았다.
sort부분 추가
DFS와 BFS와 같은 개념 코드를 구현하는 것은 어렵지 않은데, 응용문제는 힘든 것 같다. 잘 이해하고 하나하나 구현해봐야겠다.