Cod sursa(job #2193798)

Utilizator SebastianGiurgiuGiurgiu Sebastian Mircea SebastianGiurgiu Data 11 aprilie 2018 16:02:28
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>

#define inf INT_MAX
int const Nlim = 100005;

int N, M, S;
int x, y;

std::vector<int> Muchii[Nlim];
std::queue<int> Coada;

int distance[Nlim];
bool viz[Nlim];

std::ifstream f("bfs.in");
std::ofstream g("bfs.out");


void citire() {

	f >> N >> M >> S;
	for (int i = 1; i <= M; i++) {
		f >> x >> y;
		Muchii[x].push_back(y);
	}
    
	for (int i = 1; i <= N; i++) {
		distance[i] = -1;
	}

	distance[S] = 0;
	viz[S] = true;
}


void BFS() {

	Coada.push(S);

	while (!Coada.empty()) {

		int u = Coada.front();
		Coada.pop();

		for (unsigned int v = 0; v < Muchii[u].size(); v++) {
			int vecin = Muchii[u][v];
			if (!viz[vecin])
			{
				distance[vecin] = distance[u] + 1;
				Coada.push(vecin);
			}
		}
		viz[u] = true;
		
	}

	for (int i = 1; i <= N; i++)
		 g << distance[i] << " ";
}


int main() {
	citire();
	BFS();

	return 0;

}