Pagini recente » Atasamentele paginii Clasament eusebiu_oji_2011_cls9 | Cod sursa (job #1782669) | Cod sursa (job #1556483) | Cod sursa (job #2102431) | Cod sursa (job #1561440)
#include <fstream>
#include <deque>
#include <vector>
#include <iostream>
using namespace std;
const int MAX = 100000;
int N, M, S, V[MAX][MAX];
vector<int> sol;
deque<int> dq;
int main() {
ifstream in("bfs.in");
ofstream out("bfs.out");
in >> N >> M >> S;
int fst, snd;
for(int i = 0; i < M; i++) {
in >> fst >> snd;
if(fst != snd && snd != S) {
V[fst][++V[fst][0]] = snd;
}
}
for(int i = 0; i <= N; i++) {
sol.push_back(-1);
}
dq.push_back(S);
sol[S] = 0;
while(!dq.empty()) {
int curr = dq.front();
dq.pop_front();
int n = V[curr][0];
for(int i = 1; i <= n; i++) {
int e = V[curr][i];
dq.push_back(e);
sol[e] = sol[curr]+1;
}
}
for(int i = 1; i <= N; i++) {
out << sol[i] << " ";
}
return 0;
}