열렬히.뛰기

24444번: 알고리즘 수업 - 너비 우선 탐색 1 (1)

알고리즘: 실전 > 백준 단계별로 풀기: 10번 ~ 25번 > 24444번: 알고리즘 수업 - 너비 우선 탐색 1 (1)

정답

python
import sys
sys.setrecursionlimit(100000) # 무한 재귀를 막기 위해 넣는다.
input = sys.stdin.readline

def dfs(graph, v, visited):
    global cnt 
    visited[v] = True
    order[v] = cnt
    cnt += 1
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)


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 = [False] * (n+1)
order = [0] * (n+1)
cnt = 1

dfs(graph, r, visited)
for i in range(1, len(order)):
    print(order[i])

설명

  • 몇 번째로 출력되는지에 주목해야 한다.