Cod sursa(job #363459)

Utilizator funkydvdIancu David Traian funkydvd Data 13 noiembrie 2009 14:07:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>
#include<vector>
#include<deque>
#define N 100001
using namespace std;
vector<int> v[N];
int n,m,s,sol[N];
deque<int> q;
int main()
{
	freopen ("bfs.in", "r", stdin);
	freopen ("bfs.out", "w", stdout);
	int x,y,e;
	scanf ("%d %d %d", &n, &m, &s);
	for (int k=1; k<=m; k++) 
	{
		scanf ("%d %d", &x, &y);
		v[x].push_back(y);
	}
	memset (sol, -1, sizeof(sol));
	vector<int> ::iterator i;
	q.push_back(s);
	sol[s]=0;
	while (!q.empty())
	{
		e=q.front();
		for (i=v[e].begin(); i!=v[e].end(); i++)
			if (sol[*i]==-1)
			{
				sol[*i]=sol[e]+1;
				q.push_back(*i);
			}
		q.pop_front();
	}
	for (int k=1; k<=n; k++) printf ("%d ", sol[k]);
	return 0;
}