https://www.acmicpc.net/problem/11724
#include<stdio.h>
#include<stdbool.h>
static int arr[1001][1001];
static bool check[1001];
static int n;
static void dfs(int a){
check[a]=true;
for(int i=1;i<=n;i++){
if(arr[a][i]==1 && check[i]==false) dfs(i);
}
}
int main() {
int m;
scanf("%d %d",&n,&m);
while(m-->0){
int u,v;
scanf("%d %d",&u,&v);
arr[u][v]=arr[v][u]=1;
}
int count=0;
for(int i=1;i<=n;i++){
if(check[i]==false){
dfs(i);
count++;
}
}
printf("%d",count);
}