Cod sursa(job #601647)

Utilizator Dana_2011D.M.Florescu Dana_2011 Data 7 iulie 2011 12:17:48
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<stdio.h>
#include<fstream.h>
ifstream f("bfs.in");
ofstream g("bfs.out");
typedef struct nod{
	int nr;
	nod *ante;
};
nod *p,*l[1000001];
int c[1000001],ic,sc,k=0,a[1000001];
long n,m,s,i,j;
int bf(){
	nod *q;
	k++;
	while(ic<=sc){
	   q=l[c[ic]];
	   while(q){
		   if(a[q->nr]==-1){
			   sc++;
			   c[sc]=q->nr;
			   

			   if(a[q->nr]==-1)
			    a[q->nr]=k;
	      }
		  
		   q=q->ante;
	   }
	   ic++;
	   bf();
	}
	return 0;
}
int main(){
	f>>n>>m>>s;
	while(f>>i>>j){
		p=new nod;
		if(i!=j){
		  p->nr=j;
		  p->ante=l[i];
		  l[i]=p;
		}
	}
	ic=1;sc=1;
	c[1]=s;
	
	for(i=1;i<=n;i++) a[i]=-1;
	a[s]=0;
	
	bf();
	for(i=1;i<=n;i++){
		g<<a[i]<<' ';
	}
	g<<"\n";
	f.close();
	g.close();
		return 0;
}