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

입력받은 간선들을 양방향 그래프로 만들어서 그 노드에 방문했는지 체크하면 된다.
한 번 틀렸는데 틀린 이유는 처음에 양방향 그래프가 아닌 단방향 그래프로 만들어서 틀렸다.
반례)
3 2
2 1
3 2 answer = 1
from collections import deque
def BFS():
queue = deque([])
answer = 0
for num in range(1, n+1) :
if visited[num] : continue
answer += 1
queue.append(num)
while queue:
a = queue.popleft()
visited[a] = True
for i in graph[a]:
if visited[i]: continue
visited[i] = True
queue.append(i)
print(answer)
n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
visited = [False] * (n+1)
visited[0] = True
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b) # 양방향 그래프
graph[b].append(a)
BFS()