[백준] - 11724번 연결 요소의 개수(파이썬)

이승수·2022년 12월 29일

문제

방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다.

출력

첫째 줄에 연결 요소의 개수를 출력한다.

예제

6 5					2
1 2
2 5
5 1
3 4
4 6

풀이

# input 여러개일때 시간초과 방지
import sys
input = sys.stdin.readline	

from collections import deque
N, M = map(int, input().split())

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

for _ in range(M):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

visited = [False]*(N+1)

def BFS(v):
    queue = deque([v])
    visited[v]=True
    while queue:
        v = queue.popleft()
        for i in graph[v]:
            if not visited[i]:
                queue.append(i)
                visited[i]=True

# 방문하지 않은 노드에서만 BFS 실행, 개수 세기
cnt = 0
for i in range(1, N+1):
    if not visited[i]:
        BFS(i)
        cnt += 1
print(cnt)
profile
AI/Data Science

0개의 댓글