728x90
https://www.acmicpc.net/problem/11724
# 조건
- 방향 없는 그래프가 주어질 때, 연결 요소의 개수를 구하라
- 1<=N<=1000, 0<=M<=Nx(N-1)/2
# 접근 방법
- 연결 요소란 사이클이 존재하는 그래프를 말하는 것 같다.
- 따라서 시작위치부터 한 바퀴를 돌며 방문한 정점을 체크해주고, +1
- 이후 방문하지 않은 곳에서 시작하여 위의 과정 반복해준다.
import sys
from collections import deque
sys.stdin = open('input.txt')
input = sys.stdin.readline
def bfs(n):
q = deque()
q.append(n)
while q:
start = q.popleft()
for j in range(1, N+1):
# 방문하지 않았다면
if graph[start][j] and visited[j] == 0:
q.append(j)
visited[j] = 1
return visited
N, M = map(int, input().split())
# 전체 정점 리스트
graph = [[0]*(N+1) for _ in range(N+1)]
# 간선 정보 받아주며 기록하기
for _ in range(M):
a, b = map(int, input().split())
graph[a][b] = 1
graph[b][a] = 1
# 방문 기록
visited = [0] * (N+1)
# 결과
result = 0
for i in range(1, N+1):
if visited[i] == 0:
bfs(i)
result += 1
print(result)
728x90
'ALGORITHM > DFS, BFS, 그래프 탐색' 카테고리의 다른 글
[백준 2667번] 파이썬 - 단지 번호 붙이기 (0) | 2022.10.11 |
---|---|
[백준 2178번] 파이썬 - 미로 탐색 (0) | 2022.10.10 |
[백준 1697] 파이썬 - 숨바꼭질 (0) | 2022.10.05 |
[백준 1389번] 파이썬 - 케빈 베이컨의 6단계 법칙 (0) | 2022.10.01 |
[SWEA 2105] 파이썬 - 디저트카페 (1) | 2022.09.23 |