Cod sursa(job #628200)

Utilizator andumMorie Daniel Alexandru andum Data 31 octombrie 2011 19:42:22
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
# include <algorithm>
# include <queue>
# include <vector>

using namespace std;

int n,m,s,x,y,i,a[100005];
vector <int> G[100005];
queue <int> Q;

void BF(int k)
{
	int x;
	vector <int>::iterator it;
	
	fill(a+1,a+n+1,-1);
	
	a[k]=0;
	Q.push(k);
	while (!Q.empty())
	{
		x=Q.front();
		Q.pop();
		for (it=G[x].begin();it!=G[x].end();it++)
			if (a[*it]==-1)
			{
				a[*it]=a[x]+1;
				Q.push(*it);
			}
	}
}

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d", &n, &m, &s);
	for (; m; --m)
	{
		scanf("%d %d", &x, &y);
		G[x].push_back(y);
	}
	BF(s);
	for (i=1;i<=n;i++)
		printf("%d ", a[i]);
	return 0;
}