Cod sursa(job #650996)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 19 decembrie 2011 16:05:31
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <vector>

using namespace std;

#define NMAX 100050

int Q[NMAX], C[NMAX], viz[NMAX], S, n, m, nod, fiu, i, p, u, x, y;
vector <int> G[NMAX];
vector <int>::iterator it;

int main () {
	
	freopen ("bfs.in", "r", stdin);
	freopen ("bfs.out", "w", stdout);
	
	scanf ("%d %d %d", &n, &m, &S);
	
	for (i = 1; i <= m; i++) {
		scanf ("%d %d", &x, &y);
		G[x].push_back (y);
	}
	
	Q[1] = S, viz[S] = 1;
	for (p = u = 1; p <= u; p++) {
		nod = Q[p];
		for (it = G[nod].begin (); it != G[nod].end (); it++) {
			fiu = *it;
			if (!viz[fiu])
				Q[++u] = fiu, C[fiu] = C[nod] + 1, viz[fiu] = 1;
		}
	}
	
	for (i = 1; i <= n; i++)
		if (viz[i]) 
			printf ("%d ", C[i]);
		else
			printf ("-1 ");
	
	return 0;
}