[๋ฐฑ์ค/python] 1260๋ฒ : DFS์ BFS
๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค.
์ ๋ต
import sys
from collections import deque
N, M, V = map(int, sys.stdin.readline().split())
graph = {i: [] for i in range(1, N+1)}
for i in range(M):
k, v = map(int, sys.stdin.readline().split())
graph[k].append(v)
graph[v].append(k)
for k in graph:
graph[k].sort()
def DFS(graph, root):
visited = []
stack = [root]
while stack:
n = stack.pop()
if n not in visited:
visited.append(n)
stack.extend(sorted(graph[n], reverse=True))
return visited
def BFS(graph, root):
visited = []
queue = deque([root])
while queue:
n = queue.popleft()
if n not in visited:
visited.append(n)
queue.extend(graph[n])
return visited
print(' '.join(list(map(str, DFS(graph, V)))))
print(' '.join(list(map(str, BFS(graph, V)))))
N, M, V = map(int, sys.stdin.readline().split())
graph = {i: [] for i in range(1, N+1)}
for i in range(M):
k, v = map(int, sys.stdin.readline().split())
graph[k].append(v)
graph[v].append(k)
for k in graph:
graph[k].sort()
์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ์ M, ์์ ๋ ธ๋ V๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
์ ์ ์ ๊ฐ์๋งํผ key๋ฅผ ๋ง๋ค์ด value๊ฐ ๋น ๋ฆฌ์คํธ์ธ ๋์ ๋๋ฆฌ graph๋ฅผ ๋ง๋ ๋ค.
์๋ฐฉํฅ ๊ทธ๋ํ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ์๋ก๊ฐ key์ value๊ฐ ๋๋๋ก graph์ ์ ์ฅํ๋ค.
์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ธฐ ์ํด value๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
์ดํ์ DFS์ BFS๋ ์๋ ํฌ์คํ ์์ ์์ธํ๊ฒ ์ค๋ช ํด๋์๋ค.
2021.04.05 - [๐์๊ณ ๋ฆฌ์ฆ/๐ ๊ฐ๋ ์ ๋ฆฌ] - [ํ์ด์ฌ/python] DFS์ BFS
'๐์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/python] 2630๋ฒ : ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2021.04.06 |
---|---|
[๋ฐฑ์ค/python] 14889๋ฒ : ์คํํธ์ ๋งํฌ (0) | 2021.04.05 |
[๋ฐฑ์ค/python] 2108๋ฒ : ํต๊ณํ (0) | 2021.04.02 |
[๋ฐฑ์ค/python] 1182๋ฒ : ๋ถ๋ถ์์ด์ ํฉ (0) | 2021.04.02 |
[๋ฐฑ์ค/python] 18258๋ฒ : ํ 2 (0) | 2021.03.30 |