Cod sursa(job #959883)

Utilizator lucky1992Ion Ion lucky1992 Data 9 iunie 2013 11:47:54
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#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;
}