Cod sursa(job #705919)

Utilizator netedu_andreiFII Andrei Netedu netedu_andrei Data 5 martie 2012 10:25:39
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<stdio.h>
#include <vector>
#include <queue>
using namespace std;

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

vector<long> a[100000]; 
queue<long> q;


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_back(x);
	}
	q.push(s);
	pas=1; rez[s]=0;
	
	while(!q.empty())
	{
		nr2=q.size();
		for(j=0;j<nr2;j++)
		{
			x=q.front();
			nr=a[x].size();
			for ( i=0 ; i < nr; i++ )
				if(rez[a[x][i]]==-1) 
				{
					rez[a[x][i]]=pas;
					q.push(a[x][i]);
				}
			q.pop();
		}
		pas++;
	}
	for(i=1;i<=n;i++) printf("%ld ",rez[i]);
	printf("\n");
	return 0;
}