Programming/๋ฐฑ์ค
230219 [1260: DFS&BFS]
ํด๋์๊ทธ
2023. 9. 2. 17:00
๋ฐ์ํ
True → 1, False → 0 ๋ก ๊ตฌํ
import sys
from collections import deque
input = sys.stdin.readline
# N : ์ ์ ๊ฐ์, M : ๊ฐ์ ๊ฐ์, V : ํ์์์์
N, M, V = map(int, input().rstrip().split())
# ์ธ์ ํ๋ ฌ์ ๋ชจ๋ 0์ผ๋ก ๊ตฌ์ฑ
matrix = [[0]*(N+1) for i in range(N+1)]
#๋ฐฉ๋ฌธํ ๊ณณ ์ฒดํฌ ๋ฆฌ์คํธ ์ ์ ๊ฐฏ์๋งํผ ํฌ๊ธฐ ๊ตฌ์ฑ
visited_dfs = [0]*(N+1)
visited_bfs = [0]*(N+1)
# ๊ฐ์ ๊ฐฏ์ ๋งํผ ์
๋ ฅ๋ฐ๊ธฐ, ์
๋ ฅ๋ฐ๋ ๊ฐ์ ๋ํด ์ํ๋ ฌ์ 1 ์ฝ์
-> ์ธ์ ๋ฆฌ์คํธ ์์ฑ
for i in range(M):
n1, n2 = map(int, input().rstrip().split())
matrix[n1][n2] = matrix[n2][n1] = 1
def DFS(V):
visited_dfs[V] = 1 # V๊ฐ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
print(V, end= ' ')
for i in range(1, N+1):
# i๊ฐ์ ๋ฐฉ๋ฌธํ์ง ์๊ณ V์ ์ฐ๊ฒฐ์ด ๋์ด์๋ค๋ฉด
if(visited_dfs[i] == 0 and matrix[V][i] == 1):
# ํด๋น i๊ฐ์ผ๋ก ๊น์ด ํ์
DFS(i)
def BFS(V):
visited_bfs[V] = 1 # V๊ฐ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
queue = deque([V])
while queue: #q๊ฐ ๋น ๋๊น์ง
V = queue.popleft() # ํ์ ์๋ ์ฒซ๋ฒ์งธ ๊ฐ ๊บผ๋ด๊ธฐ
print(V, end = ' ')
for i in range(1, N+1): #1๋ถํฐ N๊น์ง ๋
# ๋ง์ฝ i๊ฐ์ ๋ฐฉ๋ฌธํ์ง ์์๊ณ , V์ ์ฐ๊ฒฐ์ด ๋์ด์๋ค๋ฉด
# ๊ทธ i๊ฐ ์ถ๊ฐ & ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
if(visited_bfs[i] == 0 and matrix[V][i] == 1):
queue.append(i)
visited_bfs[i] = 1
DFS(V)
print()
BFS(V)
๋ฐ์ํ