Cod sursa(job #2455380)

Utilizator sebastianlazarLazar Constantin Sebastian sebastianlazar Data 11 septembrie 2019 17:28:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <vector>
#define maxn 100010
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int>A[maxn];
int G[maxn], S[maxn], Cost[maxn];
int n, m, s,i,a,b,l,j;
void bfs(int x);
int main()
{
	fin >> n >> m >> s;
	for (i = 1; i <= m; i++)
	{
		fin >> a >> b;
		A[a].push_back(b);
		G[a]++;
	}
	bfs(s);
	for (i = 1; i <= n; i++)
	{
		fout << Cost[i] << ' ';
	}
	return 0;
}
void bfs(int nod)
{
	for (i = 1; i <= n; i++)
	{
		Cost[i] = -1;

	}
	l = 1;
	Cost[nod] = 0;
	S[l] = nod;
	for(i=1;i<=l;i++)
		for (j = 0; j < G[S[i]]; j++)
		{
			if (Cost[A[S[i]][j]] == -1)
			{
				S[++l] = A[S[i]][j];
				Cost[S[l]] = Cost[S[i]] + 1;
			}
		}
}