Pagini recente » Cod sursa (job #2214603) | Cod sursa (job #387945) | Cod sursa (job #1667181) | Cod sursa (job #1364345) | Cod sursa (job #1889211)
#include <cstdio>
#include <stack>
#include <vector>
using namespace std;
#define NMAX 100005
int a[ NMAX ];
vector < int > v[ NMAX ];
stack < int > Q;
void DFS ( int start ) {
int i, n, m;
a[ start ] = 1;
Q.push( start );
while ( !Q.empty() ) {
m = Q.top();
Q.pop();
n = v[ m ].size();
for ( i = 0; i < n; ++i ) {
if ( !a[ v[ m ][ i ] ] ) {
a[ v[ m ][ i ] ] = 1;
Q.push( v[ m ][ i ] );
}
}
}
}
int main () {
freopen( "dfs.in", "r", stdin );
freopen( "dfs.out", "w", stdout );
int n, m, i, j, x, y, s;
scanf( "%d%d",&n,&m );
while ( m-- ) {
scanf( "%d%d",&x,&y );
v[ x ].push_back( y );
v[ y ].push_back( x );
}
s = 0;
for ( i = 1; i <= n; ++i ) {
if ( !a[ i ] ) {
DFS( i );
s++;
}
}
printf( "%d", s );
return 0;
}