Cod sursa(job #2414591)

Utilizator E.L.Pnz Just E.L. Data 24 aprilie 2019 19:41:25
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std; 
ifstream fin("bfs.in");
ofstream fout("bfs.out");

void bfs(vector<vector<int>> a, vector<bool> vizitat,vector<int> &drum,  queue<int> coada)
{
	while(coada.size()>0)
	{
		int start=coada.front();
		coada.pop();
		vizitat[start]=true;
		for(int i=0;i<a[start].size();i++)
		{

			if(vizitat[a[start][i]]==false)
				{
					if(drum[a[start][i]]==-1)
						drum[a[start][i]]=drum[start]+1;
					coada.push(a[start][i]);
					vizitat[a[start][i]]=true;
				}

		}
	}

}
int main()
{
	int n,m,s;
	fin>>n>>m>>s;

	vector<vector<int>> a(n+1);
	vector<int> drum(n+1);
	vector<bool> vizitat(n+1);
	queue<int> coada;
	for(int i=1;i<=m;i++)
	{	int x,y;
		fin>>x>>y;
		a[x].push_back(y);
	}

	for(int i=1;i<=n;i++)
		drum[i]=-1;
	for(int i=1;i<=n;i++)
		vizitat[i]=false;
	coada.push(s);
	drum[s]=0;
	bfs(a,vizitat,drum,coada);
	for(int i=1;i<=n;i++)
		cout<<drum[i]<<" ";
	cout<<'\n';
	return 0;
}