DFS, BFS - 1260번: DFS와 BFS

jisu_log·2025년 8월 16일

알고리즘 문제풀이

목록 보기
83/105

from collections import defaultdict, deque


def dfs(graph, node, n, nodes, visited=set()):

    visited.add(node)
    nodes.append(node)

    child = graph[node]
    child.sort()

    for c in child:
        if c not in visited:

            dfs(graph, c, n, nodes, visited)

    return


def bfs(graph, start, n):
    visited = []
    visited.append(start)
    q = deque()
    q.append(start)
    while q:
        node = q.popleft()

        child = graph[node]

        for c in child:
            if c not in visited:
                q.append(c)
                visited.append(c)

    return visited


line = list(map(int, input().split()))

n, m, v = line[0], line[1], line[2]

graph = defaultdict(list)

for i in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

nodes = []
dfs(graph, v, n, nodes)
print(*nodes)

path = bfs(graph, v, n)
print(*path)

0개의 댓글