Pagini recente » Cod sursa (job #1895552) | Cod sursa (job #3149603) | Cod sursa (job #3197838) | Cod sursa (job #2943658) | Cod sursa (job #2165445)
# include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5 + 5;
int n, m, s, i, lvl[nmax], x;
queue <int> Q;
bool sel[nmax];
vector <int> G[nmax];
void bfs(int node) {
Q.push(node), lvl[node] = 1, sel[node] = true;
while (Q.size()) {
x = Q.front();
for (auto &it: G[x])
if (!sel[it]) lvl[it] = lvl[x] + 1, Q.push(it), sel[it] = true;
Q.pop();
}
}
int main ()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d %d %d\n", &n, &m, &s);
for (i = 1; i <= m; ++i) {
int x, y;
scanf("%d %d\n", &x, &y);
G[x].push_back(y);
}
bfs(s);
for (i = 1; i <= n; ++i)
printf("%d ", lvl[i] - 1);
printf("\n");
return 0;
}