Cod sursa(job #1263468)

Utilizator costty94Duica Costinel costty94 Data 14 noiembrie 2014 20:01:36
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <vector>
#include <cstdlib>
#include <cstdio>

using namespace std;
int x, y, cost[100111], s[100111], l, w[100111], n, m, source;
vector <int> v[100111];

void bfs(int nod)
{
	memset(cost, -1, sizeof(cost));
	cost[nod] = 0;
	s[1] = nod;
	l = 1;
	int i, j;
	for(i = 1; i <= l; i++)
		for(j = 0; j < w[s[i]]; j++)
			if(cost[v[s[i]][j]] == -1)
			{
				s[++l] = v[s[i]][j];
				cost[s[l]] = cost[s[i]] + 1;
			}
}

int main()
{
	freopen("bfs.in", "r", stdin);
	freopen("bfs.out", "w", stdout);

	int i, j;

	scanf("%d%d%d", &n, &m, &source);
	for(i = 1; i <= m; i++)
	{
		scanf("%d%d", &x, &y);
		v[x].push_back(y);
	}
	for(i = 1; i <= n; i++)
		w[i] = v[i].size();
	bfs(source);
	for(i = 1; i <= n; i++)
		printf("%d ", cost[i]);
}