Pagini recente » Cod sursa (job #773658) | Cod sursa (job #432573) | Cod sursa (job #1980896) | Cod sursa (job #1487360) | Cod sursa (job #3352275)
#include <iostream>
#include <fstream>
#include <unordered_set>
#include <queue>
using namespace std;
#ifdef LOCAL
#define fin cin
#define fout cout
#else
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#endif
unordered_set<int> adj[100001];
queue<int> q;
int distmin[100001];
int main() {
int n, m, s, x, y, nod;
fin >> n >> m >> s;
for (int i=1; i<=n; i++) distmin[i] = -1;
while (m--) {
fin >> x >> y;
adj[x].insert(y);
}
q.push(s);
distmin[s] = 0;
while (!q.empty()) {
nod = q.front();
q.pop();
for (auto vecin:adj[nod]) if (distmin[vecin] == -1) distmin[vecin] = distmin[nod] + 1, q.push(vecin);
}
for (int i=1; i<=n; i++) fout << distmin[i] << ' ';
}