💡문제접근

  • DFS와 BFS 알고리즘을 공부할 수 있는 가장 기본적인 문제였다.
    BFS를 이용해서 DFS재귀 개념을 이용한다.

💡코드(메모리 : 34148KB, 시간 : 1620ms)

from collections import deque
import sys
input = sys.stdin.readline

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):
    queue = deque([v])
    visited[v] = True
    while queue:
        v = queue.popleft()
        print(v, end = " ")
        for i in graph[v]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True

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)

    for i in range(N+1):
        graph[i].sort()

visited = [False] * (N+1)
DFS(graph, V, visited)
print()
visited = [False] * (N+1)
BFS(graph, V, visited)

💡소요시간 : 15m

0개의 댓글