Cod sursa(job #694885)

Utilizator DevilShadowJunc Raul Cosmin DevilShadow Data 28 februarie 2012 08:47:20
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <vector>
#define nm 100005

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

vector <int> v[nm];
int n, m, s, viz[nm];

void bfs(int s)
{
	int nod, c[nm], p, u;
	for(int i = 1; i <= n; i ++)
		viz[i] = -1;
	c[0] = s;
	viz[s] = 0;
	p = 0;
	u = 0;
	while(p <= u)
	{
		nod = c[p];
		p ++;
		
		for(int i = 0; i < v[nod].size(); i ++)
			if(viz[v[nod][i]] == -1)
			{
				u ++;
				viz[v[nod][i]] = viz[nod] + 1;
				c[u] = v[nod][i];
			}
	}
}

int main()
{
	int x, y;
	f >> n >> m >> s;
	while(f >> x >> y)
		v[x].push_back(y);
	
	bfs(s);
	
	for(int i = 1; i <= n; i ++)
		g << viz[i] << ' ';
}