Cod sursa(job #3313212)

Utilizator DobraVictorDobra Victor Ioan DobraVictor Data 2 octombrie 2025 20:59:44
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <stdint.h>
#include <vector>

const int32_t MAX_N = 100000;

std::vector<int32_t> adj[MAX_N];
int32_t dists[MAX_N];
int32_t q[MAX_N];

int main() {
	std::ifstream fin("bfs.in");
	std::ofstream fout("bfs.out");

	int32_t n, m, s;
	fin >> n >> m >> s;
	--s;
	for(int32_t i = 0; i != m; ++i) {
		int32_t x, y;
		fin >> x >> y;
		--x; --y;

		adj[x].push_back(y);
	}

	for(int32_t i = 0; i != n; ++i)
		dists[i] = -1;
	
	dists[s] = 0;
	q[0] = s;

	for(int32_t st = 0, dr = 1; st != dr; ++st) {
		int32_t node = q[st];

		for(int32_t next : adj[node]) {
			if(dists[next] != -1)
				continue;
			
			dists[next] = dists[node] + 1;
			q[dr++] = next;
		}
	}

	for(int32_t i = 0; i != n; ++i)
		fout << dists[i] << ' ';

	fin.close();
	fout.close();

	return 0;
}