Cod sursa(job #1698790)

Utilizator ArkinyStoica Alex Arkiny Data 5 mai 2016 13:12:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream>
#include<vector>
#include<queue>

using namespace std;

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

int D[100010], N, M, S;

vector<int> G[100010];

queue<int> Q;

void BFS(int S)
{
	Q.push(S);
	D[S] = 1;

	while (Q.size())
	{
		int e = Q.front();

		for (int i = 0;i < G[e].size();++i)
		{
			if (!D[G[e][i]])
			{
				D[G[e][i]] = D[e] + 1;

				Q.push(G[e][i]);
			}
		}

		Q.pop();
	}

}

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

	for (int i = 1;i <= M;++i)
	{
		int x, y;
		in >> x >> y;

		G[x].push_back(y);
	}

	BFS(S);
	
	for (int i = 1;i <= N;++i)
		out << D[i] - 1 << " ";

	return 0;


}