Pagini recente » Cod sursa (job #3208774) | Cod sursa (job #1763947) | Cod sursa (job #2150846) | Cod sursa (job #1371166) | Cod sursa (job #959883)
Cod sursa(job #959883)
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <vector>
#define NMAX 100005
using namespace std;
int N,M,x,y;
vector<int> neigh[NMAX];
vector<int> visited( NMAX, 0 );
vector<int> parent( NMAX, -1);
void explorare( int i ){
visited[i] = 1;
for( unsigned k = 0; k < neigh[i].size(); k++ )
if( visited[ neigh[i][k] ] == 0 ){
parent[ neigh[i][k] ] = i;
explorare( neigh[i][k] );
}
}
void dfs(){
for( int i = 1; i <= N; i++ )
if( visited[i] == 0 ){
explorare( i );
}
}
int main(){
freopen("dfs.in", "r", stdin );
freopen("dfs.out", "w", stdout );
scanf("%d%d",&N, &M );
for( int i = 1; i <=M ; i++ ){
scanf("%d%d",&x,&y);
neigh[x].push_back(y);
neigh[y].push_back(x);
}
dfs();
int components = 0;
for( int i = 1; i <=N; i++)
if( parent[i] == -1 )
++components;
printf("%d",components);
return 0;
}