-문제 링크
https://www.acmicpc.net/problem/1260
-풀이
from collections import deque
n, m, v = map(int, input().split())
maps = [[0]*(n+1) for _ in range(n+1)]
for i in range(m):
a, b = map(int, input().split())
maps[a][b] = 1
maps[b][a] = 1
def dfs(v, visited):
visited.append(v)
for i in range(n+1):
if maps[v][i] == 1 and (i not in visited):
dfs(i, visited)
return visited
def bfs(v) :
q = deque()
visited = [v]
q.append(v)
while q :
c = q.popleft()
for i in range(n+1):
if maps[c][i] == 1 and (i not in visited):
visited.append(i)
q.append(i)
return visited
print(*dfs(v, []))
print(*bfs(v))
DFS를 재귀가 아닌 STACK으로 풀 경우 틀린 답이 나온다.
'알고리즘' 카테고리의 다른 글
[백준] 2667. 단지번호붙이기 (DFS/Python) (0) | 2020.10.21 |
---|---|
[SWEA] 5097. 회전 (Python) (0) | 2020.10.21 |
[백준] 2589. 보물섬 (Python) (0) | 2020.10.21 |
[백준] 7576. 토마토 (Python) (0) | 2020.10.21 |
[SWEA] 1953. 탈주범 검거 (Python) (0) | 2020.10.21 |