Pagini recente » Cod sursa (job #1525861) | Cod sursa (job #1510106) | Cod sursa (job #2453867) | Cod sursa (job #2499466) | Cod sursa (job #970923)
Cod sursa(job #970923)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int NMax = 100100;
int N, M, S;
vector<int> A[NMax], dist(NMax);
queue<int> Q;
int main() {
#ifdef INFOARENA
#define cin fin
#define cout fout
#endif
cin >> N >> M >> S;
for (int i = 1; i <= M; i++) {
int X, Y;
cin >> X >> Y;
A[X].push_back(Y);
}
Q.push(S); dist.at(S) = 1;
for (; Q.size(); Q.pop()) {
int ret = Q.front();
for (vector<int>::iterator it = A[ret].begin(); it != A[ret].end(); it++) {
if (!dist.at(*it)) {
dist.at(*it) = dist.at(ret) + 1;
Q.push(*it);
}
}
}
for (int i = 1; i <= N; i++)
cout << dist.at(i) - 1 << ' ';
}