from collections import deque
n, m, v = map(int, input().split())
visit = [False] * 1001
visit_2 = [False] * 1001
arr = [[] for _ in range(n + 1)]
for i in range(m):
a, b = map(int,input().split())
arr[a].append(b)
arr[b].append(a)
arr = list(map(sorted,arr))
def dfs(v):
visit[v] = True
print(v, end = " ")
for i in arr[v]:
if visit[i] == 0:
dfs(i)
def bfs(v):
q = deque()
q.append(v)
visit_2[v] = True
while q:
v = q.popleft()
print(v, end = " ")
for i in arr[v]:
if visit_2[i] == False:
q.append(i)
visit_2[i] = True
dfs(v)
print()
bfs(v)
그래프 탐색 유형
bfs는 q 스택에 쌓아가는 방식을 쓰고
dfs는 재귀를 이용해 탐색한다.
아마 비슷한 유형의 문제들은 위 코드를 생각하면서 풀면 더 쉬워질 듯
'배우는 것들 > python' 카테고리의 다른 글
백준 16929- Two Dots (0) | 2022.08.05 |
---|---|
백준 11724번 - 연결요소의 갯수 (0) | 2022.07.26 |
백준 1463 - 1로 만들기 (0) | 2022.07.06 |
백준 11057번 - 오르막수 (0) | 2022.06.20 |
백준 1932번 정수삼각형 (DP) (0) | 2022.06.16 |