Pagini recente » Cod sursa (job #1024262) | Cod sursa (job #2573126) | Cod sursa (job #3229204) | Cod sursa (job #2192599) | Cod sursa (job #2763533)
#include <fstream>
#include <iostream>
#include <stack>
#include <queue>
#include <bitset>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m, nod;
vector<int> vec[100010], ans(100010, 0);
queue<pair<int, int>> q;
bitset<100010> viz;
void bfs() {
while (!q.empty()) {
pair<int, int> dp = q.front();
int x = dp.first;
int y = dp.second;
ans[x] = y;
for (auto it:vec[x])
if (!viz[it]) {
viz[it] = 1;
q.push(make_pair(it, y + 1));
}
q.pop();
}
for (int i = 1; i <= n; i++) {
if (ans[i] == 0 && i != nod)
ans[i] = -1;
fout << ans[i] << " ";
}
}
int main() {
fin >> n >> m >> nod;
q.push(make_pair(nod, 0));
viz[nod] = 1;
for (; m != 0; m--) {
int x, y;
fin >> x >> y;
vec[x].push_back(y);
}
bfs();
}