Cod sursa(job #335636)

Utilizator alex.cepoiAlexandru Cepoi alex.cepoi Data 30 iulie 2009 19:04:05
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

#define nmax 100001

int N,M,S;
vector <int> V[nmax];
int sol[nmax];
int tmp[nmax];


void bf ()
{
	int i=0; tmp[i]=S; sol[S]=1;

	while (tmp[i])
	{
		int k=i;
		for (int j=0; j<V[tmp[i]].size(); ++j)
		{
			int x = V[tmp[i]][j];
			if (!sol[x])
			{
				tmp[++k]=x;
				sol[x] = sol[tmp[i]]+1;
			}
		}
		i++;
	}
}

int main ()
{
	freopen ("bfs.in","r",stdin);
	freopen ("bfs.out","w",stdout);

	cin>>N>>M>>S;
	while (M--)
	{
		int a,b; cin>>a>>b;
		V[a].push_back(b);
	}

	bf();
	for (int i=1; i<=N; ++i) cout<<sol[i]-1<<' ';
	return 0;
}