Cod sursa(job #288109)

Utilizator warangeldinu sorin warangel Data 25 martie 2009 16:06:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<cstdio>
#include<vector>
#include<queue>

using namespace std;

const long N=100005;

vector<long> a[N];
vector<long>::iterator it;
long d[N];
long n,m,s;
long x,y;
//long coada[N],cs,ce;
long sel[N];

void citire()
{
	scanf("%ld %ld %ld",&n,&m,&s);
	for(;m--;)
	{
		scanf("%ld %ld",&x,&y);
		a[x].push_back(y);
	}
}

void bfs()
{
	int x;
	queue<int> coada;
	/*
	coada[0]=s;
	ce=cs=0;
	*/
	sel[s]=1;
	coada.push(s);
	while(!coada.empty())
	{
		x=coada.front();
		coada.pop();
		for(it=a[x].begin();it!=a[x].end();++it)
			if(!sel[*it])
			{
				d[*it]=d[x]+1;
				sel[*it]=1;
				coada.push(*it);
			}
	}
}

void afisare()
{
	for(long i=1;i<=n;i++)
		if(d[i]||i==s)printf("%ld ",d[i]);
		else printf("-1 ");
}

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	citire();
	bfs();
	afisare();
	return 0;
}