[PS] DFS/BFS: 11724 연결 요소의 개수

devhans·2024년 8월 28일
0

PS

목록 보기
16/20
post-thumbnail
import sys
sys.setrecursionlimit(10**6)
fast_input = sys.stdin.readline

def dfs(node, adj_matrix, visited):
    stack = [node]
    while stack:
        v = stack.pop()
        if not visited[v]:
            visited[v] = True
            for neighbor in range(1, len(adj_matrix)):
                if adj_matrix[v][neighbor] == 1 and not visited[neighbor]:
                    stack.append(neighbor)

# 입력 처리
N, M = map(int, fast_input().split())
adj_matrix = [[0] * (N + 1) for _ in range(N + 1)]

# 간선 정보 입력
for _ in range(M):
    u, v = map(int, fast_input().split())
    adj_matrix[u][v] = adj_matrix[v][u] = 1

visited = [False] * (N + 1)
component_count = 0

# 모든 정점에 대해 DFS 호출
for i in range(1, N + 1):
    if not visited[i]:
        dfs(i, adj_matrix, visited)
        component_count += 1

print(component_count)
profile
책 읽고 운동하기

0개의 댓글