https://www.acmicpc.net/problem/11724
비슷한 문제: 프로그래머스 Level3 네트워크
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
nodes = {i:set() for i in range(n + 1)}
for _ in range(m):
a, b = map(int, input().split())
nodes[a].add(b)
nodes[b].add(a)
def bfs(nodes, node):
q = set()
q.add(node)
visit = set()
while q:
now = q.pop()
if now not in visit:
visit.add(now)
q |= nodes[now]
return visit
answer = 0
visit = set()
for i in range(1, n + 1):
if i in visit:
continue
visit |= bfs(nodes, i)
answer += 1
print(answer)
처음에는 list로 했는데 자꾸 시간초과나서 set으로 변경해 보았더니 통과됐다.