Cod sursa(job #1168930)

Utilizator h2g2Ford Prefect h2g2 Data 9 aprilie 2014 22:06:00
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#define nmax 100005
using namespace std;

int n, m, s, a, b, dist[nmax];
bool seen[nmax];
vector <int> v[nmax];
queue <int> Q;

void bfs() {
	while(!Q.empty()) {
		int x = Q.front();
		Q.pop();
		seen[x] = true;

		for(int i=0; i<int(v[x].size()); i++) {
			if(seen[v[x][i]]) continue;

			dist[v[x][i]] = dist[x] + 1;
			Q.push(v[x][i]);
		}
	}
}

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

	f>>n>>m>>s;

	for(int i=1; i<=m; i++) {
		f>>a>>b;
		v[a].push_back(b);
	}

	Q.push(s);
	bfs();

	for(int i=1; i<=n; i++) 
		g<<(seen[i]? dist[i]:-1)<<" "; 
	g<<"\n";

	return 0;
}