Cod sursa(job #656743)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 5 ianuarie 2012 00:39:20
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
#include <vector>
#include <cstring>

using namespace std;

#define file_in "dfs.in"
#define file_out "dfs.out"


#define nmax 101000

int N,M,ans;
vector<int> G[nmax];
int viz[nmax];

void dfs(int nod){
	
	if (viz[nod])
		return ;
	viz[nod]=1;
	vector<int> :: iterator it;
	
	for (it=G[nod].begin();it!=G[nod].end();++it)
		 if (!viz[*it])
			 dfs(*it);
}


int main(){
	
	int i,a,b;
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &N, &M);
	while(M--){
		
		scanf("%d %d", &a, &b);
		
		G[a].push_back(b);
		G[b].push_back(a);
	}
	
	ans=0;
	memset(viz,0,sizeof(viz));
	
	for (i=1;i<=N;++i)
		 if (!viz[i]){
			 dfs(i);
			 ans++;
		 }
		 
	printf("%d", ans);

	return 0;
	
}