Cod sursa(job #2422000)

Utilizator tudose_bogdanTudose Bogdan tudose_bogdan Data 16 mai 2019 21:33:17
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;

const int N = 100000;

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

int n, m, x;
vector<vector<int>> G(N);

void citire()
{
	f >> n >> m >> x;

	for (int i = 0; i < m; i++)
	{
		int a, b;
		f >> a >> b;
		G[a].push_back(b);
	}

}

vector<int> D(N,-1);
bool* viz = new bool[N];

void bfs(int sursa)
{
	D[sursa] = 0;
	queue<int> q;
	q.push(sursa);
	memset(viz, 0, sizeof(viz));
	viz[sursa] = 1;
	
	while (!q.empty())
	{
		int nod = q.front();
		viz[nod] = 1;

		for (auto i : G[nod])
		{
			if (!viz[i])
			{
				D[i] = D[nod] + 1;
				q.push(i);
				viz[i] = 1;
			}
		}
		q.pop();
	}
}

int main()
{
	citire();

	bfs(x);

	for (int i = 1; i <= n; i++)
		g << D[i] << " ";




	return 0;
}