알고리즘

[BOJ] 11724 연결 요소의 개수 - python

saoh 2022. 3. 23. 19:58

백준 11724번 연결 요소의 개수 문제이다.

 

import sys
sys.setrecursionlimit(10000)

N, M = map(int,sys.stdin.readline().split())

visited = [0]*(N+1)
graph = [[0]*(N+1) for _ in range(N+1)] 

def dfs(n):
    visited[n] = 1
    for i in range(1,N+1):
        if visited[i] == 0 and graph[n][i] == 1:
            dfs(i) 

for _ in range(M): 
    a, b = map(int, sys.stdin.readline().split()) 
    graph[a][b] = 1 
    graph[b][a] = 1 

count = 0
for _ in range(1,N+1):
    if visited[_] == 0:
        dfs(_)
        count += 1		# dfs 재귀에서 돌아온 경우 count 증가
        
print(count)

 

해당 문제에서는 재귀 횟수 제한을 증가시켜줘야한다.

그렇지 않으면 런타임 에러가 발생하는데, Python이 정한 최대 재귀 깊이보다 재귀의 깊이가 더 깊어지기 때문이다.

BOJ의 채점 서버에서 이 값은 1,000으로 되어있다.