DFS / BFS 구현하기
백준 1260 문제
def bfs(v):
q = deque() #deque는 시간복잡도 O(N)
q.append(v)
visit_list[v] = 1 # 방문한 곳으로 처리, 1
while q: #q가 있는동안
v = q.popleft()
print(v, end=" ")
for i in range(1, n + 1):
#(n+1) x (n+1) 행렬 리스트로 만들고, 0으로 채우기/ 인덱스 번호 일치 위해 n+1 숫자 사용
if visit_list[i] == 0 and graph[v][i] == 1: #미방문 상태이고, 간선으로 연결됨.
q.append(i)
visit_list[i] = 1 #방문 표시 해주기
def dfs(v):
visit_list2[v] = 1
print(v, end=' ')
for i in range(1, n+1):
if visit_list2[i] == 0 and graph[v][i] == 1:
dfs(i)
if __name__ == '__main__':
from collections import deque
import sys
read = sys.stdin.readline
n, m, v = map(int, read().split()) #n 정점 / m 간선/ v 시작 번호
graph = [[0] * (n + 1) for _ in range(n+1)]
#(n+1) x (n+1) 행렬 리스트로 만들고, 0으로 채우기/ 인덱스 번호 일치 위해 n+1 숫자 사용
visit_list = [0] * (n + 1) #미방문 = 0
visit_list2 = [0] * (n + 1)
for _ in range(m): #간선 수 범위
a, b = map(int, read().split()) # 간선이 연결하는 두 정점 번호
graph[a][b] = graph[b][a] = 1 # 노드 연결 하기
dfs(v)
print()
bfs(v)