Cod sursa(job #2426679)

Utilizator TheShark62FMI Cristian-Andrei Ionescu TheShark62 Data 29 mai 2019 01:24:30
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include<iostream>
#include<fstream>
#include<list>
#include<queue>

using namespace std;

unsigned int n, m, start;
list<unsigned int> listaAdj[100001];
int nivele[100001];
queue<unsigned int> coada;

void citire() {
	ifstream in("bfs.in");

	in >> n >> m >> start;
	for (int i = 0; i < m; i++) {
		unsigned int x, y;
		in >> x >> y;
		listaAdj[x].push_back(y);
	}

	for (int i = 1; i <= n; i++)
		nivele[i] = -1;

	in.close();
}

void bfs(unsigned int x) {
	unsigned int nivel = 0;

	coada.push(x);
	nivele[x] = 0;

	while (!coada.empty()) {
		unsigned int nod = coada.front();
		coada.pop();

		for (unsigned int subnod : listaAdj[nod])
			if (nivele[subnod] < 0) {
				coada.push(subnod);
				nivele[subnod] = nivele[nod] + 1;
			}
	}
}

int main() {
	citire();

	bfs(start);

	ofstream out("bfs.out");

	for (unsigned int i = 1; i <= n; i++)
		out << nivele[i] << ' ';

	out.close();

	return 0;
}