공통: 각 노드를 오름차순 정렬
ans_dfs,ans_bfs 배열 생성
visited 배열 생성
DFS(c)
v[c]에 방문표시하고
ans_dfs.append(c)
#해야할일
for n in adj[c]:
if v[n]==0 이라면
dfs(n)
BFS(s)
1. q,v,변수 생성
2. q에 초기데이터(들) 삽입,v[]표시, ans처리
while q:
q에서 데이터 한개 꺼냄
for (ex:네방향 or 8방향..) 조건 맞으면 q삽입(문제가 바뀌면 조건이 바뀌는거지 나머지 틀을 대부분 비슷하다)
from collections import deque
def dfs(v):
visited_dfs[v] = True
print(v,end=' ')
for i in graph[v]:
if not visited_dfs[i]:
dfs(i)
def bfs(v):
queue = deque([v])
visited_bfs[v] = True
while queue:
v = queue.popleft()
print(v,end=' ')
for i in graph[v]:
if not visited_bfs[i]:
queue.append(i)
visited_bfs[i] = True
n,m,v = map(int,input().split())
graph = [[] for i in range(n+1)]
for _ in range(m): #인접그래프 만드는 법
s,e = map(int,input().split())
graph[s].append(e)
graph[e].append(s)
for i in graph: #번호가 작은것부터 방문하기위해 정렬
i.sort()
print(graph)
visited_dfs = [False] * (n+1)
visited_bfs = [False] * (n+1)
dfs(v)
print("")
bfs(v)