Cod sursa(job #220554)

Utilizator andyciupCiupan Andrei andyciup Data 11 noiembrie 2008 16:15:29
Problema Parcurgere DFS - componente conexe Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
int m, n, conex=0;
bool v[1000000];
bool viz[1005];
void baga(int a, int b){
	scanf("%d", &a);
	scanf("%d", &b);
	if(a<=b)
		v[(a-1)*n+b]=true;
	else v[(b-1)*n+b]=true;
}
void dfs(int nod){
	viz[nod]=true;
	for(int i=1; i<=nod;++i){
		if(v[(i-1)*n+nod])
			if(!viz[i])
				dfs(i);
	}
	for(int i=nod+1; i<=n; ++i){
		if(v[(nod-1)*n+i])
			if(!viz[i])
				dfs(i);
	}
}
int jmen(){
	for(int i=1; i<=n; ++i)
		if(viz[i]==false){
			dfs(i);
			conex++;
		}
	return conex;

}
int main(){
	freopen("dfs.in", "r", stdin);
	freopen("dfs.out", "w", stdout);
	scanf("%d", &n);
	scanf("%d", &m);
	int a, b;
	for(int i=1; i<=m; ++i)
		baga(a, b);
	jmen();
	printf("%d", conex);
	
	
	return 0;
}