그래프 이론에서 BFS 개념을 이해하기에 가장 좋은 문제다.
Q에 1번을 담고 1번 컴퓨터가 연결된 컴퓨터를 Q에 담는다.
모두 탐색했으면 다음 Q에서 연결된 컴퓨터를 찾아 Q에 담는 반복작업을 하고, 총 탐색한 컴퓨터 수를 출력한다.
from collections import deque
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
# 컴퓨터 별 연결된 컴퓨터 번호를 담는 배열
graph = [[] for _ in range(n+1)]
visit = [0 for _ in range(n+1)]
# 컴퓨터는 양방향 연결이다
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
answer = 0
# 1번 컴퓨터 Q에 담고 시작
Q = deque([1])
visit[1] = 1
while Q:
now = Q.popleft()
answer += 1
for i in graph[now]:
if not visit[i]:
visit[i] = 1
Q.append(i)
print(answer-1)