728x90
반응형
✏️ 문제
https://www.acmicpc.net/problem/11724
✏️ 풀이
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
반응형
'프로그래밍 > 백준' 카테고리의 다른 글
백준 7576: 토마토 해설- python (0) | 2022.02.17 |
---|---|
백준 2667: 단지번호붙이기 해설- python (0) | 2022.02.13 |
백준 2606: 바이러스 해설- python (0) | 2022.02.10 |
백준 2178: 미로탐색 해설- python (0) | 2022.02.09 |
백준 10866: 덱 해설- python (0) | 2022.02.06 |