Cod sursa(job #2042541)

Utilizator Tyler_BMNIon Robert Gabriel Tyler_BMN Data 18 octombrie 2017 19:32:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <queue>
#include <vector>

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

queue<int> Q;
int viz[100001];
int n, m, s;

vector<int> vecini[100001];

void read() {
	fin >> n >> m >> s;
	for (int i = 0; i < m; i++) {
		int x, y;
		fin >> x >> y;
		vecini[x].push_back(y);
	}
}

void bfs() {
	Q.push(s);
	viz[s] = 1;
	while (!Q.empty()) {
		int nod = Q.front();
		for (int veciniIndex = 0; veciniIndex < vecini[nod].size(); veciniIndex++) {
			int vecin = vecini[nod].at(veciniIndex);
			if (!viz[vecin]) {
				Q.push(vecin);
				viz[vecin] = viz[nod] + 1;
			}
		}
		Q.pop();
	}
}

void print() {
	for (int i = 1; i <= n; i++) {
		fout << viz[i] - 1 << " ";
	}
}

int main() {
	read();
	bfs();
	print();
	return 0;
}