백준 [ALGORITHM] - DFS와 BFS (1260)

2023. 5. 28. 18:22코딩/백준 [ALGORITHM]

반응형
from collections import deque

n, m, v = map(int, input().split())

# 그래프 초기화
graph = [[] for _ in range(n + 1)]
for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

def dfs(v):
    visited = []
    stack = [v]

    while stack:
        node = stack.pop()
        if node not in visited:
            visited.append(node)
            for neighbor in sorted(graph[node], reverse=True):
                if neighbor not in visited:
                    stack.append(neighbor)

    return visited

def bfs(v):
    visited2 = []
    queue = deque([v])

    while queue:
        node = queue.popleft()
        if node not in visited2:
            visited2.append(node)
            for neighbor in sorted(graph[node]):
                if neighbor not in visited2:
                    queue.append(neighbor)

    return visited2

visited = dfs(v)
visited2 = bfs(v)
print(' '.join(str(s) for s in visited))
print(' '.join(str(s) for s in visited2))
반응형