Pagini recente » Rating Petrican Danut (dtz.petrican) | Cod sursa (job #2660077) | Cod sursa (job #2727257) | Cod sursa (job #596216) | Cod sursa (job #2553958)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("bfs.in");
ofstream fo("bfs.out");
const int N = 1e5 + 5;
vector<int> g[N];
int dist[N];
bool f[N];
queue<int> q;
int n, m, src;
/*
* q.front();
q.push();
q.pop();
q.size();
q.empty()
*/
int main() {
fi >> n >> m >> src;
for (int a, b, i = 0; i < m; ++i) {
fi >> a >> b;
g[a].push_back(b);
}
q.push(src);
f[src] = true;
while (!q.empty()) {
int u = q.front();
q.pop();
for (auto v: g[u]) if (!f[v]) {
dist[v] = dist[u] + 1;
f[v] = true;
q.push(v);
}
}
for (int i = 1; i <= n; ++i) {
if (f[i])
fo << dist[i] << ' ';
else
fo << -1 << ' ' ;
}
fo << endl;
return 0;
}