Python/DFS&BFS

[Algorithm] 백준 11724 연결 요소의 개수 | 파이썬 DFS

유일리 2024. 6. 30. 23:11

※ 11724 연결 요소의 개수

https://www.acmicpc.net/problem/11724

문제 해결 TIP

간선 정보를 이용하여 몇개의 그룹이 만들어지는지 출력하는 문제이다. 기본 DFS 알고리즘을 이용하여 풀 수 있고, 주의해야 할 점은 RecursionError가 발생하는 것이다. 1000번 이상의 recursion이 발생하면 recursion error 가 뜨기 때문에 recursionlimit을 변경해주었다.

 

전체 코드

import sys

sys.setrecursionlimit(10**7)
input = sys.stdin.readline

N, M = map(int, input().split())
graph = [[] for _ in range(N+1)]
for i in range(M):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)
#graph = [[], [2, 5], [1, 5], [4], [3, 6], [2, 1], [4]]
#print(graph)

def dfs(graph, v, visited):
    visited[v] = True
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)

visited = [False] * (N + 1)
result = 0
for i in range(1, N + 1):
    if not visited[i]:
        dfs(graph, i, visited)
        result += 1

print(result)