Cod sursa(job #2436816)

Utilizator urweakurweak urweak Data 7 iulie 2019 13:05:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define Nlim 100005

using namespace std;

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

int N, M, S, d[Nlim];
queue <int> Q;
vector <int> muchii[Nlim];

void BFS()
{
	int nod, vecin;
	while (!Q.empty())
	{
		nod = Q.front();
		Q.pop();
		for (unsigned int i = 0; i < muchii[nod].size(); i++)
		{
			vecin = muchii[nod][i];
			if (d[vecin] == -1)
			{
				Q.push(vecin);
				d[vecin] = d[nod] + 1;
			}
		}
	}
}

int main()
{
	fin >> N >> M >> S;

	for (int i = 1; i <= M; i++)
	{
		int x, y;
		fin >> x >> y;
		muchii[x].push_back(y);
	}

	for (int i = 1; i <= N; i++)
		d[i] = -1;

	d[S] = 0;
	Q.push(S);

	BFS();
	
	for (int i = 1; i <= N; i++)
		fout << d[i] << ' ';

	return 0;
}