Cod sursa(job #2370928)

Utilizator FlorianMarcuMarcu Florian Cristian FlorianMarcu Data 6 martie 2019 14:37:50
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
//#include "pch.h"
#include <iostream>
#include <fstream>
#include <queue>
#include <list>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, S;
list<int> G[100005],coada;
int viz[100005], cost[100005];
int main()
{
	fin >> n >> m >> S;
	int i, j;
	while (fin >> i >> j)
		G[i].push_front(j);
	coada.push_back(S);
	while (coada.begin() != coada.end())
	{
		int nod = *coada.begin();
		viz[nod] = 1;
		for (auto k : G[nod])
			if (!viz[k]) {
				coada.push_back(k);
				cost[k] = cost[nod] + 1;
			}
		coada.pop_front();
	}
	for (int i = 1; i <= n; i++)
		if (cost[i] == 0 and i != S)
			fout << -1 <<" ";
		else
			fout << cost[i] <<" ";		
}