Pagini recente » Secvmin | Istoria paginii utilizator/gapdan | Fear | Diferente pentru utilizator/scipianus intre reviziile 94 si 170 | Cod sursa (job #348546)
Cod sursa(job #348546)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define fin "dfs.in"
#define fout "dfs.out"
#define mp make_pair
#define pb push_back
#define NMAX 100010
int N, M, cnt;
char viz[NMAX];
vector<int> g[NMAX];
void df(int x)
{
viz[x] = 1;
for ( int i = 0; i < g[x].size(); ++i )
if ( !viz[ g[x][i] ] )
df(g[x][i]);
}
int main()
{
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
scanf("%d%d",&N,&M);
memset(viz,0,sizeof(viz));
for ( int i = 1; i <= M; ++i )
{
int a, b;
scanf("%d%d",&a,&b);
g[a].pb(b);
g[b].pb(a);
}
for ( int i = 1; i <= N; ++i )
if ( !viz[i] ) df(i), ++cnt;
printf("%d\n",cnt);
return 0;
}