Cod sursa(job #562484)

Utilizator Robert29FMI Tilica Robert Robert29 Data 23 martie 2011 09:53:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#include<vector>
using namespace std;
FILE*f=fopen("bfs.in","r");
FILE*g=fopen("bfs.out","w");

int j,n,m,s,i,x,y,p,u,ok,c[1000001],v[1000001],k;

vector <int> L[100001];

void rez(){
	p=1;
	u=1;
	while(p<=u){
		for(i=0;i<L[c[p]].size();++i){
			if(v[L[c[p]][i]]==0&&L[c[p]][i]!=s){
				c[++u]=L[c[p]][i];
				v[c[u]]=v[c[p]]+1;
			}
		}
		++p;
	}
	
}
int main(){
	fscanf(f,"%d%d%d",&n,&m,&s);
	for(i=1;i<=m;++i){
		fscanf(f,"%d%d",&x,&y);
		L[x].push_back (y);
	}
		
	
	c[1]=s;	
	
	rez();
	
	for(i=1;i<=n;++i){
		if(v[i]!=0||i==s)
			fprintf(g,"%d ",v[i]);
		else
			fprintf(g,"-1 ");
	}
	
	fclose(g);
	fclose(f);
	return 0;
}