https://www.acmicpc.net/problem/11724
using System;
class Program
{
static int[,] arr;
static bool[] check;
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);
}
}
static void Main() {
string[] s=Console.ReadLine().Split(' ');
n=int.Parse(s[0]);
int m=int.Parse(s[1]);
arr=new int[n+1,n+1];
check=new bool[n+1];
while(m-->0){
string[] s1=Console.ReadLine().Split(' ');
int u=int.Parse(s1[0]);
int v=int.Parse(s1[1]);
arr[u,v]=arr[v,u]=1;
}
int count=0;
for(int i=1;i<=n;i++){
if(check[i]==false){
dfs(i);
count++;
}
}
Console.WriteLine(count);
}
}