from collections import deque
n = int(input())
m = int(input())
matrix = [[] for _ in range(n+1)]
visited = [0]*(n+1)
result = 0
for _ in range(m):
a, b = map(int, input().split())
matrix[a].append(b)
matrix[b].append(a)
def bfs(v):
global result
q = deque([v])
visited[v] = 1
while q:
v = q.popleft()
for i in matrix[v]:
if visited[i] == 0:
visited[i] = 1
q.append(i)
result += 1
bfs(1)
print(result)
dfs와 bfs의 개념을 알 수 있는 문제이다. 간단하게 정리하면
이 전에 풀었던 "dfs와 bfs" 이 문제와 똑같다. 솔직히 다른 부분이 하나도 없다. 그래도 조금 달라진 점을 서술하자면 정점 1부터 시작하여 bfs라는 함수에 들어왔을때 for문에서 만약 matrix[정점]의 값이 중복이 되지 않았다면 result에 +1을 해주면 끝나는 문제이다.