Cod sursa(job #229439)

Utilizator vlad_DVlad Dumitriu vlad_D Data 10 decembrie 2008 10:07:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

vector<vector<int> > v;
queue<int> Q;
int BFS[100001];
int main() {
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int n, m, s;
scanf("%d%d%d", &n, &m, &s);
v.resize(n+3);
while (m--) {
	int a, b;
	scanf("%d%d", &a, &b);
	v[a].push_back(b);
}
BFS[s] = 1;
Q.push(s);
while (!Q.empty()) {
	int top = Q.front(); Q.pop();
	for (int i = 0; i < v[top].size(); ++i) if (BFS[v[top][i]] == 0) {
		int nod = v[top][i];
		BFS[nod] = BFS[top] + 1;
		Q.push(nod);
	}	
}
for (int i = 1; i <= n; ++i) printf("%d ", BFS[i]-1);
return 0;
}