ํ์ด
์ ์ a ์ b ์ ๋ํ m ๊ฐ์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ์๋ก ์ ๋ ฅ๋ฐ๊ณ ์ด๋ฅผ ์ธ์ ํ๋ ฌ๋ก ์ ์ฅํด์ค๋ค.
n ๊ฐ์ ์ปดํจํฐ์ ๋ํ์ฌ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ์ํ visited ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ ๋ค 1๋ฒ ์ปดํจํฐ๋ฅผ ์์์ผ๋ก BFS ๋ฅผ ํตํด ์คํ์์ผ์ค๋ค.
1๋ฒ ์ปดํจํฐ์ ์ธ์ ํ ๋ชจ๋ ์ปดํจํฐ์ ๊ดํ์ฌ BFS ๊ฐ ์คํ๋ ๋ ans ๋ฆฌ์คํธ์ ์ธ์ ํ ์ปดํจํฐ๋ค์ ๋ชจ๋ ๋ฐํํ๋ค.
์ดํ ์ถ๋ ฅ์กฐ๊ฑด์ ๋ง์ถฐ์ 1๊ณผ ์ฐ๊ฒฐ๋ ์ปดํจํฐ๋ฅผ ์ถ๋ ฅํด์ฃผ๋ฉด๋๋ค.
์์ค์ฝ๋
# ๋ฐ์ด๋ฌ์ค
from collections import deque
import sys
input = sys.stdin.readline
def bfs(v):
ans = []
q = deque()
q.append(v)
visited[v] = 1
while q:
v = q.popleft()
ans.append(v)
for i in range(1, n+1):
if visited[i] == 0 and graph[v][i] == 1:
q.append(i)
visited[i] = 1
return ans
n = int(input())
m = int(input())
graph = [[0] * (n+1) for _ in range(n+1)]
visited = [0] * (n+1)
for _ in range(m):
a, b = map(int, input().split())
graph[a][b] = graph[b][a] = 1
ans = bfs(1)
ans.remove(1)
print(len(ans))