Cod sursa(job #3336761)

Utilizator alexandrucarloPascariu Alexandru Carlo alexandrucarlo Data 25 ianuarie 2026 18:46:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <vector>
#include <queue>
#include <algorithm>
#include <fstream>
using namespace std;

constexpr int N_MAX = 100000 + 1;
int n, m, s, x, y;
int visited[N_MAX], distante[N_MAX], tati[N_MAX];
vector<int> lista_muchii[N_MAX];

void bfs(int src) {
	queue<int> coada;
	//tati[src] = 0;
	distante[src] = 0;

	visited[src] = 1;
	coada.push(src);
	
	while (coada.size() > 0) {
		int c = coada.front();
		for (auto&d: lista_muchii[c]) { // adaugam vecinii lui c
			if (!visited[d]) {	
				visited[d] = 1;
				coada.push(d);
				distante[d] = distante[c] + 1;
			}
		}
		coada.pop(); // il eliminam pe c
	}

}
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int main() {
	fill_n(distante, N_MAX, -1);
	fin >> n >> m >> s;

	// citire
	for (int i = 0; i < m; i++) {
		fin >> x >> y;
		lista_muchii[x].push_back(y);
	}

	bfs(s);

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

	return 0;
}