내 코드

import sys
sys.setrecursionlimit(10 ** 5)
input = sys.stdin.readline

n, m, r = map(int, input().split())
graph = [[] for _ in range(n + 1)]
visited = [0] * (n + 1)
count = 1

for _ in range(m):
    x, y = map(int, input().split())
    graph[x].append(y)
    graph[y].append(x)

for i in graph:
    i.sort()

def dfs(r):
    global count
    visited[r] = count

    for i in graph[r]:
        if visited[i] == 0:
            count += 1
            dfs(i)

dfs(r)
print(*visited[1:], sep="\n")

 

보편적인 recursion dfs 방식으로 해결

 

메모리 초과 오류가 난다면 setrecursionlimit을 10 ** 4로 설정

+ Recent posts