열렬히.뛰기

1260번: DFS와 BFS

알고리즘: 실전 > 알고리즘 강의 > 1260번: DFS와 BFS

코드

python
"""DFS와 BFS"""
from collections import deque
import sys
input = sys.stdin.readline

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



def bfs(graph, start, visited):
    queue = deque([start])
    visited[start] = True

    while queue:
        n = queue.popleft()
        print(n, end=' ')

        for i in graph[n]:
            if not visited[i]:
                visited[i] = True
                queue.append(i)
    

n, m, r = map(int, input().split())
graph = [[] for _ in range(n+1)]
for _ in range(m):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)
for i in graph:
    i.sort()

visited_1, visited_2 = [False] * (n+1), [False] * (n+1)
dfs(graph, r, visited_1)
print("")
bfs(graph, r, visited_2)