Cod sursa(job #907753)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 8 martie 2013 11:52:15
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>
struct gr{
	long int nr;
	long int vec[100];
}a[100005];
long int v[100105],viz[100005],n,m,i,p,u,x,y,s;

void bf()
{
	while(p<=u){
		for(i=1;i<=a[v[p]].nr;i++)
			if(viz[a[v[p]].vec[i]]==0){
				u++;
				v[u]=a[v[p]].vec[i];
				viz[v[u]]=viz[v[p]]+1;
				
			}
			p++;
	}	
}

void citire()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%ld %ld %ld",&n,&m,&s);
	for(i=1;i<=m;i++){
		scanf("%ld %ld",&x,&y);
		a[x].nr++;
		a[x].vec[a[x].nr]=y;
	}
	p++;u++;
	v[p]=s;
	viz[s]=1;
}

void afisare()
{
	for(i=1;i<=n;i++)
		if(viz[i]==0 && i!=s)printf("-1 ");
		else printf("%ld ",viz[i]-1);
}

int main()
{
	citire();
	bf();
	afisare();
	return 0;
}