Pagini recente » tema | Istoria paginii runda/becreative23/clasament | Cod sursa (job #2133682) | Istoria paginii runda/becreative23/clasament | Cod sursa (job #1413793)
/*
Keep It Simple!
*/
#include <vector>
#include <fstream>
#include <queue>
#include <cstring>
using namespace std;
const int kMaxN = 100005;
int N, M, S;
vector<int> G[kMaxN];
queue<int> que;
int seen[kMaxN];
void Solve() {
ifstream fin("bfs.in");
fin >> N >> M >> S;
for (int i(0); i <= M; ++i) {
int x, y;
fin >> x >> y;
G[x].push_back(y);
}
fin.close();
memset(seen,0x3f,sizeof seen);
que.push(S);
seen[S] = 0;
while (!que.empty()) {
int node = que.front();
que.pop();
for (auto it : G[node]) {
if (seen[it] > seen[node] + 1) {
seen[it] = seen[node] + 1;
que.push(it);
}
}
}
ofstream fout("bfs.out");
for (int i(1); i <= N; ++i)
fout << (seen[i] == 0x3f3f3f3f ? -1:seen[i]) << " ";
fout.close();
}
int main() {
Solve();
return 0;
}