๐ ๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
๐์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค.
๐์ถ๋ ฅ
์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค.
๐ ๋ฌธ์ ํด์
ํด์์ด๋ผ๊ณ ํ ๋งํ๊ฒ ์๋,,ใ ใ
DFS์ BFS์ ๊ฐ๋ ๋ง ์๊ณ ์๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
DFS์ ๋ ธ๋ ๋ฐฉ๋ฌธ์์์ BFS์ ๋ฐฉ๋ฌธ์์๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋ง์ฝ DFS์ BFS์ ๊ฐ๋ ์ด ์์ง ์ ์กํ ์๋ค๋ฉด ์ ๋ฆฌํด ๋ ๊ธ์ด ์์ผ๋ ์ฝ์ด๋ณด์๊ธธใ .ใ
https://lazypazy.tistory.com/95
๐ป ์ฝ๋
import sys
from collections import deque
input = sys.stdin.readline
# dfs ํจ์ ์ ์(์ฌ๊ท)
def dfs(graph, v, visited):
visited[v] = True # ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
print(v, end=' ') # ํ์ฌ ๋
ธ๋ ์ถ๋ ฅ
for i in sorted(graph[v]): # ์ค๋ฆ์ฐจ์์ผ๋ก ์ด์ํ ๋
ธ๋
if not visited[i]: # ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋๊ฐ ์๋ค๋ฉด ๋ฐฉ๋ฌธ
dfs(graph, i, visited)
# bfs ํจ์ ์ ์
def bfs(graph, start, visited):
queue = deque([start]) # ํ์ ํ์ฌ ๋
ธ๋ ์ฝ์
visited[start] = True # ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
while queue: # ํ๊ฐ ๋น๋ ๋์
v = queue.popleft()
print(v, end=' ') # ํ์ฌ ๋
ธ๋ ์ถ๋ ฅ
for i in sorted(graph[v]): # ์ค๋ฆ์ฐจ์์ผ๋ก ์ด์ํ ๋
ธ๋
if not visited[i]: # ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด
queue.append(i) # ํ์ ์ฝ์
visited[i] = True # ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
n, m, start = map(int, input().rstrip().split()) # ์ ์ , ๊ฐ์ , ์์์ ์
graph = [[] for j in range(n+1)] # ๊ทธ๋ ค์ง ๊ทธ๋ํ ์ด๊ธฐํ
for k in range(m):
a, b = map(int, input().rstrip().split()) # ์ด์ํ ์ ์ ์ฐ๊ฒฐ์ํด
graph[a].append(b)
graph[b].append(a)
visited = [False] * (n+1)
# dfs ํจ์ ์คํ
dfs(graph, start, visited)
print()
visited = [False] * (n+1)
# bfs ํจ์ ์คํ
bfs(graph, start, visited)
๐ ๋ฌธ์ ๋งํฌ DFS์ BFS
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 13140๋ฒ: Hello World! - ํ์ด์ฌ (0) | 2022.06.27 |
---|---|
[๋ฐฑ์ค] 17451๋ฒ: ํํ ์ฐ์ฃผ - ํ์ด์ฌ (0) | 2022.06.26 |
[๋ฐฑ์ค] 1389๋ฒ: ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น - ํ์ด์ฌ (0) | 2022.06.23 |
[๋ฐฑ์ค] 17626๋ฒ: Four Squares - ํ์ด์ฌ (0) | 2022.06.20 |
[๋ฐฑ์ค] 11403๋ฒ: ๊ฒฝ๋ก ์ฐพ๊ธฐ - ํ์ด์ฌ (0) | 2022.06.19 |