Pagini recente » Cod sursa (job #379646) | Cod sursa (job #2972855) | Cod sursa (job #3300099) | Rezultatele filtrării | Cod sursa (job #3297377)
#include <stdio.h>
#include <vector>
const int MAXN = 5e5;
int viz[MAXN];
std::vector<int> adj[MAXN];
void dfs( int u ) {
viz[u] = true;
for( int v : adj[u] )
if( !viz[v] )
dfs( v );
}
int main() {
FILE *fin = fopen( "dfs.in", "r" );
FILE *fout = fopen( "dfs.out", "w" );
int n, m;
fscanf( fin, "%d%d", &n, &m );
for( int i = 0; i < m; i++ ){
int a, b;
fscanf( fin, "%d%d", &a, &b );
a--; b--;
adj[a].push_back( b );
adj[b].push_back( a );
}
int ncomp = 0;
for( int i = 0; i < n; i++ )
if( !viz[i] ){
ncomp++;
dfs( i );
}
fprintf( fout, "%d\n", ncomp );
fclose( fin );
fclose( fout );
return 0;
}