Cod sursa(job #768844)

Utilizator ioana26Ioana Andronescu ioana26 Data 17 iulie 2012 19:55:10
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
/*
Parcurgerea in latime intr-un graf.
*/

#include <iostream>
#include <vector>
#include <queue>
#include <stdio.h>
#include <limits.h>

#define MAXN	1000000

using namespace std;

int nr_noduri, nr_muchii, sursa;
int dist[MAXN];
vector<int> noduri[MAXN];

void bfs () {
	queue<int> coada;
	int i;
	for (i = 1; i <= nr_noduri; i++) 
		dist[i] = -1;

	dist[sursa] = 0;
	coada.push(sursa);
	while (!coada.empty()) {
		int u = coada.front();
		coada.pop();
		for (i = 1; i <= noduri[u].size(); i++) {
			int v = noduri[u][i];
			if (dist[v] == -1) {
				dist[v] = dist[u] + 1;
				coada.push(v);
			} 
		}
	}
}

int main () {
	freopen("bfs.in", "r", stdin);
	freopen("bfs.out", "w", stdout);

	int i, x, y;
	scanf("%d %d %d", &nr_noduri, &nr_muchii, &sursa);
	for (i = 1; i <= nr_muchii; i++) {
		scanf("%d %d", &x, &y);
		noduri[x].push_back(y);
	}

	bfs();

	for (i = 1; i <= nr_noduri; i++)
		printf("%d ", dist[i]);	
	printf("\n");

	return 0;
}