๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค.
์์ ์ ๋ ฅ 1
4 5 1
1 2
1 3
1 4
2 4
3 4
์์ ์ถ๋ ฅ 1
1 2 4 3
1 2 3 4
์์ ์ ๋ ฅ 2
5 5 3
5 4
5 2
1 2
3 4
3 1
์์ ์ถ๋ ฅ 2
3 1 2 5 4
3 1 4 2 5
์์ ์ ๋ ฅ 3
1000 1 1000
999 1000
์์ ์ถ๋ ฅ 3
1000 999
1000 999
# ํ์ด ๋ฐฉ๋ฒ
*๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธ* > ์ธ์ ๋ฆฌ์คํธ๋ฅผ ์ค๋ฆ์ฐจ์
๋๋จธ์ง๋ ๊ทธ๋ฅ bfs, dfs ์๊ณ ๋ฆฌ์ฆ์ ์๋ฉด ์ ์ฉํ ์ ์๋ ๋ฌธ์ ์๋ค.
# ์ฝ๋
import sys
from collections import deque
# sys.stdin = open("input.txt", "r")
n, m, v = map(int, sys.stdin.readline().split())
# ์ธ์ ๋ฆฌ์คํธ ์ ์
graph = [[] for _ in range(n+1)]
for _ in range(m):
a, b = map(int, sys.stdin.readline().split())
graph[a].append(b); graph[b].append(a) # ์๋ฐฉํฅ
[g.sort() for g in graph]
# visited ๋ฐฐ์ด ์ ์
visited_dfs = [False] * (n + 1)
visited_bfs = [False] * (n + 1)
def dfs(graph, v, visited):
visited[v] = True
print(v, end=' ')
for i in graph[v]:
if not visited[i]:
dfs(graph, i, visited)
def bfs(graph, start, visited):
queue = deque()
queue.append(start)
visited[start] = True
while queue:
v = queue.popleft()
print(v, end=' ')
for i in graph[v]:
if not visited[i]:
queue.append(i)
visited[i] = True
dfs(graph, v, visited_dfs);print()
bfs(graph, v, visited_bfs)
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Silver III] 10451 - ์์ด ์ฌ์ดํด (0) | 2025.04.09 |
---|---|
[Silver I] 2178 - ๋ฏธ๋กํ์ (0) | 2025.04.09 |
[Silver I] ํ์์ค ๋ฐฐ์ - 1931 (1) | 2024.11.27 |
[Silver II] ์์ด๋ฒ๋ฆฐ ๊ดํธ - 1541 (1) | 2024.11.27 |
[Silver IV] ๋น๊ทผ ํค์ฐ๊ธฐ - 20363 (0) | 2024.11.27 |