Cod sursa(job #601672)

Utilizator Dana_2011D.M.Florescu Dana_2011 Data 7 iulie 2011 13:49:32
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
//*
#include<stdio.h>
#include<fstream.h>
#define nmax 10001
ifstream f("bfs.in");
ofstream g("bfs.out");
typedef struct nod{
	int nr;
	nod *ante;
};
nod *p,*q,*l[nmax];
int a[nmax], n,ic,sc,s,m,i,j, x,c[nmax];	

int bf(){
	
	while(ic<=sc){
	   x=c[ic];
	   ic++;
	   q=l[x];
	   while(q){
		   if(a[q->nr]==-1){
			   
			   a[q->nr]=a[x]+1;
			   sc++;
			   c[sc]=q->nr;
						
	      }
	     q=q->ante;
	   }
	}
	
	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;
		}
	}
	
	c[0]=s;
	for(i=1;i<=n;i++) a[i]=-1;
	a[s]=0;	
	
	bf();
	
	for(i=1;i<=n;i++)
		g<<a[i]<<' ';
	
		return 0;
}