Cod sursa(job #2424355)

Utilizator mateigabriel99Matei Gabriel mateigabriel99 Data 22 mai 2019 21:56:57
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

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

int N, M, S;
map<int, vector<int>> G;
map<int, int> dist;

void Read()
{
	fin >> N >> M >> S;
	for (int i = 0; i < M; i++)
	{
		int x, y;
		fin >> x >> y;
		G[x].push_back(y);
	}
}

void BFS(int source)
{
	for (int i = 1; i <= N; i++)
		dist[i] = -1;

	dist[source] = 0;
	queue<int> queue;
	queue.push(source);
	while (!queue.empty())
	{
		int node = queue.front();
		queue.pop();
		for (auto child : G[node])
			if (dist[child] == -1)
			{
				dist[child] = dist[node] + 1;
				queue.push(child);
			}
	}
}

void Write()
{
	for (int i = 1; i <= N; i++)
		fout << dist[i] << " ";
}

int main()
{
	Read();
	BFS(S);
	Write();

	return 0;
}