백준 11724: 연결요소의 개수 해설- python
프로그래밍/백준

백준 11724: 연결요소의 개수 해설- python

728x90
반응형

 

✏️ 문제

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

 

11724번: 연결 요소의 개수

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

www.acmicpc.net

 

✏️ 풀이

visited 리스트를 순차적으로 확인하면서 요소값이 0일때 bfs를 실행할거다. 그러면 만약 1,2,4 연결되어 있으면 bfs 한번실행에 다 1이될거다.. 그러면 다음 반복땐 3에서 bfs를 다시 돌릴거고 이런식으로하면 연결된 부분이 끝날때마다 bfs를 돌릴 수 있게 된다. 이때 bfs돌릴때마다 answer+=1해주면 답이 나올거임
from collections import deque
import sys

n,m = list(map(int, sys.stdin.readline().split()))
matrix=[[0]*(n+1) for _ in range(n+1)]
for _ in range(m): # 인접행렬
  a,b=map(int, sys.stdin.readline().split())
  matrix[a][b]=matrix[b][a]=1
#bfs구현
visited=[0]*(n+1) #[0] 비우는거 국룰
def bfs(V):
  queue=deque([V])
  visited[V]=1
  while queue:
    V=queue.popleft()
    for i in range(1,n+1):
      if visited[i]==0 and matrix[V][i]==1:
        queue.append(i)
        visited[i]=1

answer=0
for i in range(1,n+1):
  if visited[i]==0:
    bfs(i)
    answer+=1

print(answer)
728x90
반응형