Cod sursa(job #2801603)

Utilizator HutuMateiHutu Matei HutuMatei Data 16 noiembrie 2021 17:17:44
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;
const int NMAX = 100000;
vector <int> G[NMAX+5];
vector <int> viz;
vector <int> d;
ifstream in("bfs.in");
ofstream out("bfs.out");

void bfs(int nod, int cc)
{
	int v;
 	queue<int>q;
	q.push(nod);
	viz[nod]=cc;
	while(!q.empty())
	{
		nod=q.front();
		for(int j=0;j<G[nod].size();j++)
		{
			v=G[nod][j];
			if(viz[v]==0)
			{
				viz[v]=cc;
				d[v]= d[nod] + 1;
				q.push(v);
			}
		}
		q.pop();
	}
}
int main()
{
	int n,m,u,v,i,s;
	in>>n>>m>>s;
	for(i=1;i<=m;i++)
	{
		in>>u>>v;
		G[u].push_back(v);
	}
	viz.assign(n+1,0);
	d.assign(n+1, -1);
	bfs(s,1);
	for(i=1;i<=n;i++)
	{
		out<<d[i]<<" ";
	}
}