Cod sursa(job #1426182)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 29 aprilie 2015 06:06:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <vector>
#include <fstream>
#include <queue>
using namespace std;

constexpr int gol = -1;

void bfs(const vector<vector<int> >& adiacente, const int s, vector<int>& dist){
	dist[s] = 0;
	queue<int> de_viz;
	de_viz.push(s);
	int cur;
	while(!de_viz.empty()){
		cur = de_viz.front();
		de_viz.pop();
		for(auto next : adiacente[cur]){
			if(dist[next] == gol){
				dist[next] = dist[cur] + 1;
				de_viz.push(next); } } } }

int main(){
	ifstream f("bfs.in");
	ofstream g("bfs.out");
	int n, m, s;
	f >> n >> m >> s;
	--s;
	vector<int> dist(n, gol);
	vector<vector<int> > adiacente(n);
	for(int i = 0, a, b; i < m; ++i){
		f >> a >> b;
		adiacente[a-1].push_back(b-1); }
	bfs(adiacente, s, dist);
	for(auto x : dist){
		g << x << ' '; }
	return 0; }