https://www.acmicpc.net/problem/11724
import sys
sys.setrecursionlimit(10**8)
n,m=map(int,input().split())
graph=[[] for _ in range(n+1)]
visited=[False]*(n+1)
def dfs(v):
visited[v]=True
for i in graph[v]: # 정점 v와 인접한 정점 i를 순차적으로 검사
if not visited[i]:
dfs(i)
for i in range(m):
u,v=map(int,sys.stdin.readline().rstrip().split())
graph[u].append(v)
graph[v].append(u)
cnt=0
for i in range(1,n+1):
if not visited[i]: # 정점 i를 기준으로 방문하지 않은 경우
dfs(i)
cnt+=1
print(cnt)