모각소 2주차
→ 현재 node가 All done이면, 이전 node로 return
→ 시작 node가 All done이면, 탐색 종료
import sys
# 현재 node와 연결된 모든 node가 visited O -> return 이전 node
# 현재 node와 연결된 모든 node가 visited X -> 연결된 node 중 가장 작은 node로 이동
def DFS(startNode):
visited[startNode] = True
print(startNode, end=" ")
for i in matrix[startNode]:
if(not visited[i]):
DFS(i)
node, edge, start = map(int, sys.stdin.readline().split())
# Graph에서 node끼리 connection 확인
matrix = [[] for i in range(node+1)]
# 방문 여부 저장
visited = [False]*(node+1)
# Graph 형성
for i in range(edge):
n1, n2 = map(int, sys.stdin.readline().split())
matrix[n1].append(n2)
matrix[n2].append(n1)
for i in range(1, node+1):
matrix[i].sort()
for i in range(1, node+1):
print(matrix[i])
DFS(start)
from collections import deque
def BFS(node, graph, visited):
q = deque()
q.append(node)
visited[node] = True
while q:
v = q.popleft()
print(v, end=" ")
for i in graph[v]:
if (visited[i]==False):
q.append(i)
visited[i] = True
nodeNum, edgeNum, startNode = map(int, input().split())
visited = [False]*(nodeNum+1)
graph = [[] for _ in range(nodeNum+1)]
for i in range(edgeNum):
i, j = map(int, input().split())
graph[i].append(j)
graph[j].append(i)
for i in range(nodeNum):
graph[i].sort()
BFS(startNode, graph, visited)
[사진출처]
https://gmlwjd9405.github.io/2018/08/15/algorithm-bfs.html
https://gmlwjd9405.github.io/2018/08/14/algorithm-dfs.html