Cod sursa(job #2453591)

Utilizator davidcotigacotiga david davidcotiga Data 4 septembrie 2019 16:36:07
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream> 
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

int N, M;
int const NLIM = 100005;
vector <int> muchii[NLIM];
queue <int> coada;

int distanta[NLIM];

void BFS() {
	int nod, vecin;
	while (!coada.empty()) {
		nod = coada.front();
		coada.pop();
		for (unsigned int i = 0; i < muchii[nod].size(); ++i) {
			vecin = muchii[nod][i];
			if (distanta[vecin] == -1) {
				coada.push(vecin);
				distanta[vecin] = distanta[nod] + 1;
			}
		}

	}

}

void citire() {
	int nodStart;
	fin >> N >> M >> nodStart;
	for (int i = 1; i <= M; ++i) {
		int x, y;
		fin >> x >> y;
		muchii[x].push_back(y);
		muchii[y].push_back(x);
	}
	for (int i = 1; i <= N; ++i)
		distanta[i] = -1;
	distanta[nodStart] = 0;

	coada.push(nodStart);
	BFS();

	for (int i = 1; i <= N; ++i)
		fout << distanta[i] << " ";
}

int main() {
	citire();

	return 0;
}