๐ณ ๋งํฌ
๐ ๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
๐พ ํ์ด ๋ฐฉ๋ฒ
dfs์ bfs๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค.
๋ฐฉ๋ฒ์ ๋น์ทํ์ง๋ง, dfs๋ graph์ ๊ฐ์ด 1์ธ ๊ฒฝ์ฐ์ ์์ ๋
ธ๋๋ก ํฅํ๊ธฐ ์ํด ์ฌ๊ท๋ฅผ ์ด์ฉํ๊ณ , bfs๋ graph์ ๊ฐ์ด 1์ธ ๊ฒฝ์ฐ์๋ ํ์ ์ฝ์
ํ๊ณ ๋ ๋ค๋ฅธ ํ์ ๋
ธ๋์์ 1์ธ ๊ฐ์ด ์๋์ง ํ์ธํ๋ค.
์ฆ, dfs๋ ๋ ๊น์ด bfs๋ ๋ ๋๊ฒ๋ผ๊ณ ์๊ฐํ๋ฉด ์ข์ ๋ฏ.
dfs์ bfs[๊ทธ๋ฆผ ์ถ์ฒ : https://namu.wiki]
์์ค์ฝ๋
import sys, collections
sys.setrecursionlimit(10 ** 5)
sys.stdin = open("input.txt","rt")
def dfs(x):
visit[x] = 1
print(x+1, end=' ')
for i in range(n):
if graph[x][i] == 1 and visit[i] == 0 :
dfs(i)
return
def bfs(x):
q = collections.deque()
q.append(x)
while q:
i = q.popleft()
print(i+1, end= ' ')
for j in range(n):
if graph[i][j] == 1 and visit[j] == 0:
visit[j] = 1
q.append(j)
return
n, m, v = map(int, sys.stdin.readline().split())
v -= 1
graph = [[0] * n for _ in range(n)]
for _ in range(m):
a, b = map(int,sys.stdin.readline().split())
a, b = a-1, b-1
graph[a][b] = 1
graph[b][a] = 1
# dfs
visit = [0] * n
dfs(v)
print()
# bfs
visit = [0] * n
visit[v] = 1
bfs(v)