Pagini recente » Cod sursa (job #2221962) | Cod sursa (job #2177126) | Cod sursa (job #2232321) | Cod sursa (job #2309203) | Cod sursa (job #2737511)
#include <bits/stdc++.h>
using namespace std;
#define debug(x) cerr << #x << " = " << x << "\n";
ifstream in("bfs.in");
ofstream out("bfs.out");
const int inf = (int)1e9 + 7;
const int max_n = (int)1e5 + 5;
int n, m, x;
vector<int> g[max_n];
int d[max_n];
bool visited[max_n];
int main() {
in >> n >> m >> x;
for (int i = 1; i <= m; i++) {
int u, v;
in >> u >> v;
g[u].push_back(v);
}
fill(d + 1, d + n + 1, inf);
d[x] = 0;
visited[x] = true;
queue<int> q;
q.push(x);
while ((int)q.size() > 0) {
int u = q.front();
q.pop();
for (int v : g[u]) {
if (!visited[v] && d[v] > d[u] + 1) {
visited[v] = true;
d[v] = 1 + d[u];
q.push(v);
}
}
}
for (int i = 1; i <= n; i++) {
if (d[i] == inf) {
d[i] = -1;
}
out << d[i] << " ";
}
return 0;
}