๋ฐฑ์ค 1260๋ฒ ํ์ด์ฌ
import sys
from collections import deque
input = sys.stdin.readline
n, m, v = map(int, input().split())
graph = [[False] * (n+1) for _ in range(n + 1)]
visited_dfs = [False] * (n+1) # ๋
ธ๋์ ๋ฐฉ๋ฌธ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๋ฐฐ์ด
visited_bfs = [False] * (n+1)
# ๋
ธ๋์ ๋ฐฉ๋ฌธ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๋ฐฐ์ด
for _ in range(m):
n1, n2 = map(int, input().split())
graph[n1][n2] = graph[n2][n1] = True
# ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค์ ์ฒดํฌ
def dfs(s):
visited_dfs[s] = True
print(s, end= ' ')
for i in range(1, n+1):
if (visited_dfs[i] == False and graph[s][i] == True) :
# ๋ฐฉ๋ฌธํ ์ ์ด ์๊ณ ํด๋น ๋
ธ๋์ ๊ฐ์ด ์กด์ฌ ํ ๋ ํ์ ์์
dfs(i)
dfs(v)
print()
def bfs(s): # ํ๋ฅผ ์ฌ์ฉ
q = deque([s]) # ๋ฐฉ๋ฌธํด์ผ ํ ๊ณณ ์ถ๊ฐ
visited_bfs[s] = True
while q: # ๋ฐฉ๋ฌธํ ๊ณณ์ด ์์ผ๋ฉด ์ข
๋ฃ
x = q.popleft()
print(x, end = ' ')
for i in range(1, n+1):
if (visited_bfs[i] == False and graph[x][i] == True):
# ์ฅ๋ฌธํ ์ ์ด ์๊ณ ํด๋น ๋
ธ๋์ ๊ฐ์ด ์กด์ฌํ ๋
q.append(i)
visited_bfs[i] = True
bfs(v)
print()
dfs๋ ๊ตฌํํ๊ธฐ ์ด๋ ต์ง ์์ง๋ง bfs๊ฐ ์ ๋ง ํท๊ฐ๋ฆฐ๋ค..ใ
์ ๋ง ์ ์ตํ ๊ธ์ด์์ต๋๋ค.