Cod sursa(job #2426042)

Utilizator ciprian.perju.fmiCiprian Perju ciprian.perju.fmi Data 25 mai 2019 20:24:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

using namespace std;
int *dist;
int N, M, S, x, y, i;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
void BFS(vector <int> G[], int start)
{

	queue <int> S;
	S.push(start);
	while (!S.empty())
	{
		int v = S.front();
		S.pop();
		for (i = 0; i < G[v].size(); i++)
		{
			if (dist[G[v][i]] == -1)
			{
				dist[G[v][i]] = dist[v] + 1;
				S.push(G[v][i]);
			}
		}
	}
	for (i = 1; i <= N; i++)
	{
		fout << dist[i] << ' ';
	}
}
void initializare()
{
	for (i = 1; i <= N; i++)
	{
		dist[i] = -1;
	}
	dist[S] = 0;
}
int main()
{
	fin >> N >> M >> S;
	vector < int > G[M + 1];
	for (i = 1; i <= M; i++)
	{
		fin >> x >> y;
		G[x].push_back(y);
	}
	dist = new int[N + 1];
	initializare();
	BFS(G, S);
	fin.close();
	fout.close();
	return 0;
}