DFS - 연결 요소의 개수[11724번]

2022. 4. 18. 16:232022/BaekJoon_알고리즘

def dfs(idx):
    if idx in visited:
        return 
    
    visited.append(idx)
    
    for nextIdx in range(1, len(graph[idx])):
        if(graph[idx][nextIdx] == 1) and (nextIdx not in visited):
            dfs(nextIdx)
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline

N, M = map(int, input().split())
graph = [[0]*(N+1) for _ in range(N+1)]
for _ in range(M):
    a, b = map(int, input().split()) 
    graph[a][b] = 1
    graph[b][a] = 1
 
global graph
global visited           
visited = []; cnt = 0
for i in range(1, N+1):
    if i not in visited:
        dfs(i)
        cnt+=1
        
print(cnt)
  • 재귀함수는 Depth가 정해져있으므로 바꾸어야 함 -> sys.setrecursionlimit(10000)
  • 시작이 정해지지 않은 경우에는 1부터 N까지 하나씩 확인

'2022 > BaekJoon_알고리즘' 카테고리의 다른 글

BFS - 단지번호붙이기 [2667번]  (0) 2022.07.14
BFS - 미로 탐색 [2178번]  (0) 2022.07.14
DFS - DFS와BFS[1260번]  (0) 2022.04.17
DFS - 바이러스[2606번]  (0) 2022.04.09
Dynamic Programming(DP) - 정수 삼각형[1932]  (0) 2022.04.07