Cod sursa(job #2293266)

Utilizator VadimCCurca Vadim VadimC Data 30 noiembrie 2018 18:45:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

#define NMax 100010
#define MMax 1000010

int n, m, s;
vector<int> a[NMax];
vector<bool> viz(NMax, false);
int d[NMax];

void citire();
void bfs();
void afisare();

int main(){
	citire();
	bfs();
	afisare();
}

void citire(){
	int i, x, y;
	fin >> n >> m >> s;
	for(i = 0; i < m; i++){
		fin >> x >> y;
		a[x].push_back(y);
	}
	fill(d, d + n + 1, -1);
}

void bfs(){
	int i, x = s;
	queue<int> c;
	c.push(x);
	d[x] = 0; viz[x] = true;
	while(!c.empty()){
		x = c.front(); c.pop();
		for(i = 0; i < a[x].size(); i++)
			if(!viz[a[x][i]]){
				d[a[x][i]] = d[x] + 1;
				viz[a[x][i]] = true;
				c.push(a[x][i]);
			}
	}
}

void afisare(){
	int i;
	for(i = 1; i <= n; i++) fout << d[i] << ' ';
}