[백준] BFS와 DFS - 복습

문제

[백준] BFS와 DFS

풀이

  1. 인접 행렬 / 방문 여부 행렬 만들기
  2. DFS : Recursion function
  3. BFS : Queue, deque 사용
from collections import deque
n, m, v = map(int, input().split())
graph = [[] for _ in range(n+1)]

for _ in range(m):
    st, en = map(int, input().split())
    graph[st].append(en)
    graph[en].append(st)
    graph[st].sort()
    graph[en].sort()

def dfs(graph, v, visited):
    visited[v] = True
    print(v, end=' ')
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)

def bfs(graph, v, visited):
    visited[v] = True
    queue = deque()
    queue.append(v)
    while queue:
        start = queue.popleft()
        print(start, end = ' ')
        for i in graph[start]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True
        
visited = [False] * (n+1)
dfs(graph, v, visited)

print()

visited = [False] * (n+1)
bfs(graph, v, visited)

태그: , ,

카테고리:

업데이트: