내 코드
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로 설정
'백준 알고리즘 (Baekjoon Algorithm)' 카테고리의 다른 글
[파이썬] 백준 알고리즘 No.24444 알고리즘 수업 - 너비 우선 탐색 1 (0) | 2023.02.08 |
---|---|
[파이썬] 백준 알고리즘 No.24480 알고리즘 수업 - 깊이 우선 탐색 2 (0) | 2023.02.08 |
[파이썬] 백준 알고리즘 No.1753 최단경로 (0) | 2022.03.15 |
[파이썬] 백준 알고리즘 No.5525 IOIOI (0) | 2022.03.11 |
[파이썬] 백준 알고리즘 No.24498 blobnom - 블롭컵 대회 (0) | 2022.02.22 |