Pagini recente » Diferente pentru home intre reviziile 198 si 199 | Diferente pentru home intre reviziile 902 si 277 | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2029042)
#include <stdio.h>
#include <vector>
#include <bitset>
#define nmax 100000
using namespace std;
vector <int> v[nmax];
bitset <nmax> verif;
int co;
void dfs( int nod ) {
verif[nod] = 1;
for ( int i = 0; i < v[nod].size(); i++ ) {
if( verif[v[nod][i]] == 0 ) {
verif[v[nod][i]] = 1;
dfs( v[nod][i] );
}
}
}
int main() {
int n, m, i, x, y;
FILE *fin, *fout;
fin = fopen( "dfs.in", "r" );
fscanf( fin, "%d%d", &n, &m );
for ( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &x, &y );
x--;y--;
v[x].push_back(y);
v[y].push_back(x);
}
fclose( fin );
for ( i = 0; i < n; i++ ) {
if ( verif[i] == 0 ) {
co++;
dfs( i );
}
}
fout = fopen( "dfs.out", "w" );
fprintf( fout, "%d\n", co );
fclose( fout );
return 0;
}