https://www.acmicpc.net/problem/1260
1260๋ฒ: DFS์ BFS
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ
www.acmicpc.net
from collections import deque
n, m, v = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
data = input().split()
graph[int(data[0])].append(int(data[1]))
graph[int(data[1])].append(int(data[0]))
for i in range(n+1):
graph[i].sort()
dfs_visited = [False] * (n+1)
bfs_visited = [False] * (n+1)
def dfs(dfs_visited, v):
dfs_visited[v] = True
print(v, end=' ')
for i in graph[v]:
if not dfs_visited[i]:
dfs(dfs_visited, i)
def bfs(bfs_visited, v):
bfs_visited[v] = True
queue = deque([v])
while queue:
q = queue.popleft()
print(q, end=' ')
for i in graph[q]:
if not bfs_visited[i]:
queue.append(i)
bfs_visited[i] = True
dfs(dfs_visited, v)
print()
bfs(bfs_visited, v)
๊ทธ๋ํ ๋ฒํธ๊ฐ 1๋ฒ๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์คํธ ํฌ๊ธฐ๋ฅผ ํธํ๊ฒ n+1๋ก ์ก์๋ค! (์ธ๋ฑ์ค 0์ ๋น์ด์์)
๋ ธ๋๋ฒํธ๋ณ๋ก ๊ทธ๋ํ์ ์ฐ๊ฒฐ๋ ๋ ธ๋ ๋ฃ์ด์ฃผ๊ณ ๊ทธ ์์์ ์ ๋ ฌํ ๋ค์์ ๊ฐ๊ฐ dfs, bfs๋ฅผ ๋๋ ค์ฃผ์๋ค
์๋ฌด๋ฆฌ ๋ด๋ ํ๋ฆฐ๊ฒ ์์ด๋ณด์ด๋๋ฐ ์๊พธ ์คํจํด์ ํ๋์ ๋ฐฅ ๋จน๊ณ ์ฌ๋ค๊ฐ ์๋๋ฐ
์๊ณ ๋ณด๋๊น ๋ฉ์ฒญํ๊ฒ ๊ทธ๋ํ ์ ๋ ฌํ ๋ ํฌ๋ฌธ์ n+1๋ก ๋๋ ค์ผ ํ๋๋ฐ n์ผ๋ก ๋๋ ค์ ์ ๋ ฌ์ด ๋ค ์๋์ด์์์,,
๊ผผ๊ผผํ๊ฒ ํ์ธํด๋ณด์,,
'๐ค > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 2667: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (Python) (0) | 2022.01.31 |
---|---|
๋ฐฑ์ค 2606: ๋ฐ์ด๋ฌ์ค (Python) (0) | 2022.01.29 |
๋ฐฑ์ค 13305: ์ฃผ์ ์ (Python) (0) | 2022.01.21 |
๋ฐฑ์ค 1789: ์๋ค์ ํฉ (Python) (0) | 2021.10.02 |
๋ฐฑ์ค 1946: ์ ์ ์ฌ์ (Python) (0) | 2021.09.30 |