Cod sursa(job #709406)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 8 martie 2012 07:53:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#include<vector>
#define val 100010
int i , n , m , u ,C[val],Cost[val],Fr[val],s,x,y; 
struct nod{
	int nr;
	nod *adr;
}* p;
nod* c,*L[val];
FILE*f=fopen("bfs.in","r");
FILE*g=fopen("bfs.out","w");

int main(){
	
	fscanf(f,"%d %d %d",&n,&m,&s);
	
	for(i=1;i<=m;i++){
		fscanf(f,"%d%d",&x,&y);
		p=new nod;
		p->nr=y;
		p->adr=L[x];
		L[x]=p;
	}
	delete p;
	for(i=1;i<=n;i++)
		Cost[i]=-1;
	Cost[s]=0;Fr[s]=1;
	int p=1;u=1;C[1]=s;
	
	while(p<=u){
		c=L[C[p]];
		while(c!=NULL){
			if(Fr[c->nr]==0){
				Fr[c->nr]=1;
				C[++u]=c->nr;
				Cost[C[u]]=Cost[C[p]]+1;
			}
			c=c->adr;
		}
		p++;
	}
	delete c;
	for(i=1;i<=n;i++)
		fprintf(g,"%d ",Cost[i]);
	return 0;
}