Cod sursa(job #2636069)

Utilizator PMAorBANPurcaras Paul-Vasile PMAorBAN Data 16 iulie 2020 15:06:17
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

vector<int> arches[1000002];
queue<int> next_arch;
int N, M, S,visited[1000002], distance_arches[1000002];

fstream fin;
ofstream fout;

void read()
{
	fin >> N >> M >> S;
	for (int i = 1;i <= M;i++)
	{
		int a,b;
		fin >> a >> b;
		arches[a].push_back(b);
	}
}

void BFS()
{
	visited[S] = 1;
	next_arch.push(S);
	while (!next_arch.empty())
	{
		int node = next_arch.front();
		next_arch.pop();
		for(int i=0;i<arches[node].size();i++)
			if (!visited[arches[node][i]])
			{
				distance_arches[arches[node][i]] = distance_arches[node] + 1;
				visited[arches[node][i]] = 1;
				next_arch.push(arches[node][i]);
			}
	}
}

void print()
{
	for (int i = 1;i <= N;i++)
		if (distance_arches[i] == 0 && i != S)
			fout << "-1 ";
		else
			fout << distance_arches[i]<<" ";
}

int main()
{
	fin.open("bfs.in");
	fout.open("bfs.out");
	read();
	BFS();
	print();
	fin.close();
	fout.close();
	return 0;
}