Cod sursa(job #851573)

Utilizator alinaelenaFMI Colceag Alina alinaelena Data 10 ianuarie 2013 01:57:40
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<cstdio>
#include<vector>
using namespace std;
#define nmax 100001
using namespace std;
int viz[nmax],q[nmax];
vector <int> v[nmax];

int n,m,s;

void read()
{
	int i,x,y;
	for (i=1;i<=m;++i)
	{
		scanf("%d %d",&x,&y);
		v[x].push_back(y);
		
	}
		
}


void bfs()
{
	
	int p=1,u=1; int i;
	q[p]=s;
	

	while(p<=u)
	{
		for (i=0;i<v[q[p]].size();++i)				
				if ((viz[v[q[p]][i]]==0)&&(v[q[p]][i]!=s))
				{
					u++;
					viz[v[q[p]][i]]=viz[q[p]]+1;
					q[u]=v[q[p]][i];
				}
				
		
			p++;
	}

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

}



int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d%d%d",&n,&m,&s);
	read();
	
	bfs();
}