Cod sursa(job #850555)
#include<cstdio>
#include<cstdlib>
#include<vector>
#define NMAX 100000
using namespace std;
int sel[NMAX];
vector <int>v[NMAX];
void df(int i)
{
sel[i]=1;
for(int j=0;j<v[i].size();j++)
if(sel[v[i][j]]==0)
df(v[i][j]);
}
int main()
{
freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
int n,m,i,a,b;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
a=0;
for(i=1;i<=n;i++)
{
if(sel[i]==0)
{
df(i);
a++;
}
}
printf("%d",a);
return 0;
}