Cod sursa(job #1438101)

Utilizator VladutZ94FMI Chichirau Vlad Vasile VladutZ94 Data 19 mai 2015 00:17:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 100005

std::vector<int> adiacenta[NMAX];
int n, m, Start, L;
std::vector<int> G(NMAX), S(NMAX), Cost(NMAX, -1);

void BFS(int nod_curent)
{
	L = 1;
	Cost[nod_curent] = 0;
	S[L] = nod_curent;

	for (int i = 1; i <= L; i++)
	{
		for (int j = 0; j < G[S[i]]; j++)
		{
			if (Cost[adiacenta[S[i]][j]] == -1)
			{
				S[++L] = adiacenta[S[i]][j];
				Cost[S[L]] = Cost[S[i]] + 1;
			}
		}
	}
}

int main()
{
	std::ifstream f("bfs.in");
	std::ofstream g("bfs.out");
	f >> n >> m >> Start;
	int x, y;
	for (int i = 1; i <= m; i++)
	{
		f >> x >> y;
		adiacenta[x].push_back(y);
	}
	for (int i = 1; i <= n; i++)
		G[i] = adiacenta[i].size();
	BFS(Start);
	for (int i = 1; i <= n; i++)
		g << Cost[i] << " ";

	return 0;
}