Cod sursa(job #1133121)

Utilizator DarkyAngelDarky Angel DarkyAngel Data 4 martie 2014 14:38:52
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cstdio>
#include <cstring>
#define MAXN 100010

using namespace std;

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

int N, M, S;
vector<int> n[MAXN];
int nrv[MAXN], C[MAXN], cost[MAXN];

void read()
{
	int x, y;
	
	f >> N >> M >> S;
	for(int i = 0; i < M; ++i)
	{
		f >> x >> y;
		n[x].push_back(y);
		nrv[x]++;	
	}
	
	f.close();
}

void bfs()
{
	int qi, qf;
	qi = qf = 0;
	memset(cost, -1, sizeof(cost));
	C[0] = S;
	cost[S] = 0;
	while(qi <= qf)
	{
		for(int i = 0; i < nrv[C[qi]]; i++)
			if(cost[n[C[qi]][i]] == -1)
				C[++qf] = n[C[qi]][i], cost[C[qf]] = cost[C[qi]]+1;
		
		++qi;
	}
}

void afisare()
{
	for(int i = 1; i <= N; ++i)
	{
		g << cost[i] << " ";
	}
	g.close();
}

int main()
{
	read();
	bfs();
	afisare();
}