- 위의 그림과 같이 graph가 형성되어 있는 경우, 연결 요소가 2개 있다고 함
- for문을 통해 N만큼의 시작 node들을 순회하면서 그 결과값을 set형식으로 check list에 저장해둠
- len(check)이 연결 요소의 개수가 됨
import sys
from collections import deque
tmp = list(map(int, sys.stdin.readline()[:-1].split(' ')))
N = tmp[0]; M = tmp[1]
adjacent = [[] for _ in range(N+1)]
for _ in range(M):
t0, t1 = map(int, sys.stdin.readline()[:-1].split(' '))
adjacent[t0].append(t1)
adjacent[t1].append(t0)
check = []
def bfs(start):
global check
visit_b[start] = True
nodes = deque([start]); tmp = []
while nodes:
v = nodes.popleft()
tmp.append(v)
for i in range(len(adjacent[v])):
if not visit_b[adjacent[v][i]]:
visit_b[adjacent[v][i]] = True
nodes.append(adjacent[v][i])
if set(tmp) not in check:
check.append(set(tmp))
for v in range(1, N+1):
visit_b = [False] * (N+1)
bfs(v)
print(len(check))