Cod sursa(job #1133111)

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

using namespace std;

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

int N, M, S;
int n[MAXN][MAXN], C[MAXN], cost[MAXN], viz[MAXN];

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

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

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

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