DFS์ BFS
๐ก **Check Point !
(ย ํด๋น์ฌํญย โ์ฒดํฌย )
๋งํ ์์ด ์์ํ๊ฒ ํ๋ฆฐ ๋ฌธ์ ์ธ๊ฐ? โ
1์๊ฐ์ด๋ด๋ก ํ๋ ธ๋ ๋ฌธ์ ์ธ๊ฐ?
1์๊ฐ ์ด์ or ๋ฉฐ์น ์ ๋๊ณ ํ์ด๋ดค๋๋ ํ๋ฆฐ ๋ฌธ์ ์ธ๊ฐ?
์๊ฐ์ ์จ๋ ๋๋ฌด์ง ํ ์ ์๋ ๋ฌธ์ ์ธ๊ฐ?
์๋ฃจ์ ์ ์ฐพ์๋ดค๋๊ฐ?
๋์ด๋ ์ฒด๊ฐ
์ต์
์โ
์คโ
ํ
์ดํด๋
์๋ฒฝํ ์ดํดโ
๋ค์ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ๋ค์ด ์์
์ดํด ๋ชปํจ
๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
๋์ ํ์ด
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import sys
from collections import defaultdict, deque
def DFS(graph,i,visited):
visited[i]=True
print(i,end=' ')
for g in graph[i]:
if not visited[g]:
DFS(graph,g,visited)
def BFS(graph,i,visited):
queue=deque()
queue.append(i)
visited[i]=True
while queue:
v=queue.popleft()
print(v,end=' ')
for g in graph[v]:
if not visited[g]:
queue.append(g)
visited[g]=True
N,M,V=map(int,input().split())
graph=defaultdict(list)
for _ in range(M):
n1,n2=map(int,sys.stdin.readline().strip().split())
graph[n1].append(n2)
graph[n2].append(n1)
for key in graph:
graph[key].sort()
visited=[False]*(N+1)
DFS(graph,V,visited)
print('')
visited=[False]*(N+1)
BFS(graph,V,visited)
print('')
- ์ ๋ฌธ์ ๋ ๋จ์ํ BFS, DFS์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๋ฌธ์ ์๋ค. ์ด์ BFS, DFS ์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ธ์ฉ ์ต์ํด์ ธ ๊ฐ๋ ๊ฒ ๊ฐ๋ค. ๋ ์ฐ์ตํ๋ฉด์ ์์ ํ ์ต์ํด์ง ์ ์๋๋ก ํด์ผ ํ ๊ฒ ๊ฐ๋ค.
- ํนํ BFS์ deque()๋ฅผ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ์์ ์ ๊ธฐ์ตํ์.