Cod sursa(job #2117956)

Utilizator Alex_AmarandeiAmarandei Matei Alexandru Alex_Amarandei Data 29 ianuarie 2018 20:11:14
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <queue>
#include <vector>

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

int n, m, start, k;
int f[100005];

queue <int> coada;
vector <int> a[100005];

void read();
void BFS();
void write();

int main()
{
	read();
	BFS();
	write();

	return 0;
}

void read()
{
	int i, x, y;

	fin >> n >> m >> start;

	for (i = 1; i <= m; i++)
	{
		fin >> x >> y;
		if(x != y)
			a[x].push_back(y);
	}
}

void BFS()
{
	int i, x, lg = 0;

	coada.push(start);

	while (!coada.empty())
	{
		x = coada.front(); coada.pop();
		for (i = 0; i < a[x].size(); i++)
			if (!f[a[x][i]])
			{
				coada.push(a[x][i]); f[a[x][i]] = f[x] + 1;
			}
	}
}

void write()
{
	int i;

	f[start] = -13;
	for (i = 1; i <= n; i++)
		if (f[i] > 0)
			fout << f[i] << ' ';
		else
			if (f[i] == 0)
				fout << -1 << ' ';
			else
				fout << 0 << ' ';
}