본문 바로가기
배우는 것들/python

백준 1260- DFS와 BFS

by Ho.virus 2022. 7. 25.
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