Cod sursa(job #413806)

Utilizator n3msizN3msiz n3msiz Data 9 martie 2010 10:31:39
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<stdio.h>

int a[1000][1000],viz[1000],n,m,s,x,y,i,c[100000],u,p,ip,d[1000];

int main(){
	FILE*f=fopen("bfs.in","r");
	FILE*g=fopen("bfs.out","w");
	
	fscanf(f,"%d %d %d",&n,&m,&s);
	
	for(i=1;i<=m;i++){
		fscanf(f,"%d %d",&x,&y);
		a[x][y]=1;
	}
	
	
	for(i=1;i<=n;i++){
		if(a[s][i]==1){
			c[++u]=i;
			viz[i]=1;
			d[i]=1;
		}
	}
	
	d[s]=0;
	p=1;
	
	while(p<=u){
		ip=c[p];
		
		for(i=1;i<=n;i++){
			if(a[ip][i]==1 && viz[i]==0){
				c[++u]=i;
				viz[i]=1;
				d[i]=d[ip]+1;
			}
		}
		p++;
	}
	
	for(i=1;i<=n;i++){
		if(d[i]==0 && i!=s)
			fprintf(g,"-1 ");
		else
			fprintf(g,"%d ",d[i]);
	}
	
	
	fclose(f);
	fclose(g);
	return 0;
}