๋ฌธ์ ๋งํฌ: www.acmicpc.net/problem/1260
๋ฌธ์ ์ค๋ช
๋จ์ํ DFS์ BFS๋ฅผ ์ํํ๋ฉด ๋ฉ๋๋ค.
์ ๋ (N + 1) X (N + 1) ํฌ๊ธฐ์ matrix๋ฅผ ์ด์ฉํด ์ ์ ๊ฐ์ ๊ฐ์ ์ ํ์ํ์ต๋๋ค.
๋ํ dfs๋ฅผ ํ ๋ ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฅผ 1๋ก ํํํ๊ณ bfs๋ฅผ ํ ๋ 0์ผ๋ก ํํํด์ visited๋ฅผ ๋ฐ๋ก ์ด๊ธฐํํ ํ์ ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ์ต๋๋ค.
์์ค์ฝ๋
def dfs(v):
# ๋ฐฉ๋ฌธ ๋
ธ๋ 1๋ก ํํ
visited[v] = 1
print(v, end = ' ')
for i in range(1, n + 1):
# ์ธ์ ๋
ธ๋ ์ค ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋ ํ์
if visited[i] == 0 and matrix[v][i] == 1:
dfs(i)
def bfs(start):
queue = [start]
# ๋ฐฉ๋ฌธ ๋
ธ๋ 0์ผ๋ก ํํ
visited[start] = 0
while queue:
v = queue.pop(0)
print(v, end = ' ')
for i in range(1, n + 1):
# ์ธ์ ๋
ธ๋ ์ค ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋ ๋ฐฉ๋ฌธ
if visited[i] == 1 and matrix[v][i] == 1:
queue.append(i)
visited[i] = 0
n, m, v = map(int, input().split())
visited = [0] * (n + 1)
# matrix์ ์ฐ๊ฒฐ๋ ๋
ธ๋ ํ์
matrix = [[0] * (n + 1) for _ in range(n + 1)]
for _ in range(m):
i, j = map(int, input().split())
matrix[i][j] = 1
matrix[j][i] = 1
dfs(v)
print()
bfs(v)
728x90
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค (BOJ) / Python] 18352๋ฒ: ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (0) | 2021.03.30 |
---|---|
[๋ฐฑ์ค(BOJ) / Python] 10026๋ฒ: ์ ๋ก์์ฝ (0) | 2021.03.16 |
[๋ฐฑ์ค(BOJ) / Python] 1946๋ฒ: ์ ์ ์ฌ์ (0) | 2021.03.09 |
[๋ฐฑ์ค BOJ / Python ] 14916๋ฒ: ๊ฑฐ์ค๋ฆ๋ (0) | 2021.03.08 |
[๋ฐฑ์ค BOJ / C++] 2504๋ฒ: ๊ดํธ์ ๊ฐ (0) | 2021.01.13 |