์์ ์์ ๋ฅผ 2์ฐจ์ ๋ฐฐ์ด๋ก ํํํ๋ฉด ์ด๋ ๊ฒ ๋๋ค. (์๋ฐฉํฅ์ด๋ฏ๋ก)
matrix[i][j]๋ผ๋ฉด i์์ j๋ฅผ ๊ฐ ์ ์์ผ๋ฉด 1, ์๋๋ฉด 0์ด๋ค.
def dfs(v): # v๊ฐ ์์์
print(v, end=' ')
visit[v] = 1 # ๋ฐฉ๋ฌธํ ์ 1๋ก
for i in range(1, n + 1):
if visit[i] == 0 and matrix[v][i] == 1: # ๋ฐฉ๋ฌธ์ ์์ง ์ํ๊ณ v์์ i๋ก ๊ฐ์์๋ค๋ฉด
dfs(i) # i๋ฅผ ๋ค์ v๋ก ํ๋ฉด์ dfs ๋ก ํ์
def bfs(v):
queue = [v] # ๋ค๋ ค์ผ ํ ์ ์ ์ฅ
visit[v] = 0 # ๋ฐฉ๋ฌธํ ์ 0์ผ๋ก( dfs๋ก ์ธํด 1๋ก ๋ฐ๋์ด ์์ผ๋ฏ๋ก)
while queue: # ํ๊ฐ ๋น ๋๊น์ง
v = queue.pop(0)
print(v, end=' ')
for i in range(1, n + 1):
if visit[i] == 1 and matrix[v][i] == 1:
queue.append(i) # bfs์ด๋ฏ๋ก ์ฒซ ์ ์์ ๊ฐ ์ ์๋ค๋ ๊ฑธ ํ์ธํ ๋๋ง๋ค queue์ push
visit[i] = 0
n, m, v = map(int, input().split())
matrix = [[0] * (n + 1) for i in range(n + 1)] # 0๋ถํฐ ์์ํ๋ฏ๋ก
visit = [0 for i in range(n + 1)]
for i in range(m):
x, y = map(int, input().split())
# ๊ฐ ์ ์๋ ์ ์ ์ 1๋ก ์ค์
matrix[x][y] = 1
matrix[y][x] = 1
dfs(v)
print()
bfs(v)
'ALGORITHM' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋ฆฌ ๊น์ด ๊ตฌํ๋ ๋ฐฉ์ (0) | 2021.01.12 |
---|---|
[BFS] ๋ฐฑ์ค 2178 ๋ฌธ์ ํ์ด (0) | 2020.10.26 |
[์ด์งํ์] programmers ์ ๊ตญ ์ฌ์ฌ ๋ฌธ์ ํ์ด (0) | 2020.10.11 |
[TSP] ๋ฐฑ์ค 10971 ๋ฌธ์ ํ์ด (0) | 2020.09.19 |
[Stack] ๋ฐฑ์ค 3986 ๋ฌธ์ ํ์ด (0) | 2020.09.19 |