Cod sursa(job #2196037)

Utilizator StasBrega Stanislav Stas Data 18 aprilie 2018 09:37:38
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#include <queue>
#include <iostream>

using namespace std;

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

const int NLIM=100001;

int n,m,s;

vector <int> graf[NLIM];
int dis[NLIM];
queue <int> coada;

void BFS()
{
	int Nod, Vecin;
	while(!coada.empty())
	{
		Nod=coada.front();
		coada.pop();
		for(int i=0;i<graf[Nod].size();i++)
		{
			Vecin=graf[Nod][i];
			if(dis[Vecin]==-1)
			{
				coada.push(Vecin);
				dis[Vecin]=dis[Nod]+1;
			}
		}
	}
}
void Citire()
{
	int x,y;
	fin >> n >> m >> s;
	for(int i=1;i<=m;i++)
	{
		fin >> x >> y;
		graf[x].push_back(y);
	}
	for(int i=1;i<=n;i++)
	    dis[i]=-1;
	dis[s]=0;
	coada.push(s);
	BFS();
}
void Afisare()
{
	for(int i=1;i<=n;i++)
	    fout << dis[i] << " ";
}
int main()
{
	
	Citire();
	Afisare();
	
	return 0;
	
}