Cod sursa(job #705900)

Utilizator netedu_andreiFII Andrei Netedu netedu_andrei Data 5 martie 2012 09:59:00
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#include <vector>
#include <queue>
using namespace std;

long i,n,m,x,y,s,pas,rez[100000];

queue<long> q,a[100000];


int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%ld %ld %ld",&n,&m,&s);
	for(i=1;i<=n;i++) rez[i]=-1;
	for(i=1;i<=m;i++)
	{
		scanf("%ld %ld",&y,&x);
		a[y].push(x);
	}
	q.push(s);
	pas=1; rez[s]=0;
	
	while(!q.empty())
	{
		x=q.front();
		while(!a[x].empty())
		{
			y=a[x].front();
			if(rez[y]==-1) 
			{
				rez[y]=pas;
				q.push(y);
			}
			a[x].pop();
		}
		pas++;
		q.pop();
	}
	for(i=1;i<=n;i++) printf("%ld ",rez[i]);
	printf("\n");
	return 0;
}