Cod sursa(job #401535)

Utilizator maditzaaciuca madalina maditzaa Data 22 februarie 2010 22:01:40
Problema Parcurgere DFS - componente conexe Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream.h>
#include <fstream.h>
ifstream f("dfs.in");
ofstream g("dfs.out");
int n,m,i,j,viz[100001],nr=1,p,c[100001];
struct nod{
	int inf;
	nod *adr;
};
nod *P[100001], *q;




void creare(){
	f>>n>>m;
	for(int k=1;k<=m;k++){
		f>>i>>j;
		q=new nod;
		q->inf=j;
		q->adr=P[i];
		P[i]=q;
	}
}


void bf(int x){
	int p,u;
	p=u=1;
	c[p]=x;
	viz[x]=1;
	while(p<=u){
		q = P[c[p]];
		while (q!=NULL) {
			i = q->inf;
			if(!viz[i]){
				c[++u]=i;
				viz[i]=1;
				
			}
			
			q = q->adr;
		}
		p++;
	}
}

int main(){
	creare();
	for(i=1;i<=n;i++)
		if(!viz[i]){
			bf(i);
			nr++;
		}
	g<<nr-1;
	
	f.close();
	g.close();
	return 0;
}