Cod sursa(job #613900)

Utilizator alexdmotocMotoc Alexandru alexdmotoc Data 5 octombrie 2011 00:17:47
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <string>

using namespace std;

#define MaxN 100005

int N , M , S , cost[MaxN] , x , y , nod;
vector <int> lista[MaxN];
queue <int> coada;
	
int main ()
{
	freopen ("bfs.in" , "r" , stdin);
	freopen ("bfs.out" , "w" , stdout);
	
	scanf ("%d %d %d" , &N , &M , &S);
	
	for (int i = 1 ; i <= M ; ++i)
	{
		scanf ("%d %d" , &x , &y);
		
		lista[x].push_back (y);
	}
	
	memset (cost , -1 , sizeof (cost));
	
	coada.push (S);
	
	cost[S] = 0;
	
	while (!coada.empty ())
	{
		
		nod = coada.front ();
		
		for (unsigned i = 0 ; i < lista[nod].size () ; ++i)
			if ( cost[lista[nod][i]] == -1 )
			{
				coada.push (lista[nod][i]);
				cost[lista[nod][i]] = cost[nod] + 1;
			}
		
		coada.pop ();
	}
	
	for (int i = 1 ; i <= N ; ++i)
		printf ("%d " , cost[i]);
	
	return 0;
}