Cod sursa(job #631924)

Utilizator StefanLacheStefan Lache StefanLache Data 9 noiembrie 2011 22:11:23
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<iostream>
#include<vector>
#include<stdio.h>

using namespace std;

vector <int> muchii[100001];
int sel[ 100001];

void bf (const int &nod_sursa, const int &numar_noduri) {
	vector<int> coada_bf;
	coada_bf.push_back(nod_sursa);

	int element_actual = 0;
	sel[nod_sursa] = 1;

	while (element_actual < coada_bf.size()) {
		int nod_actual = coada_bf[element_actual];
		int nr_vecini = muchii[nod_actual].size();
		for (int j = 0; j < nr_vecini; ++j)
			if (sel[muchii[nod_actual][j]] == 0) {
				coada_bf.push_back( muchii[nod_actual][j]);
				sel[ muchii[nod_actual][j]] = sel[nod_actual] + 1;
			}
		++element_actual;
	}
	for (int i = 1; i <= numar_noduri; ++i)
		cout<< sel[i] - 1 <<" ";
}

int main() {

	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	int numar_noduri, numar_muchii, nod_sursa;	
	cin>>numar_noduri>>numar_muchii>>nod_sursa;
	for (int i = 1; i <= numar_muchii; ++i) {
		int sursa, destinatie;
		cin>>sursa>>destinatie;
		muchii[sursa].push_back(destinatie);
	}
	
	bf (nod_sursa, numar_noduri);

	return 0;
}