Pagini recente » Cod sursa (job #1858287) | Cod sursa (job #2436936) | Cod sursa (job #145535) | Cod sursa (job #46418) | Cod sursa (job #1930581)
# include <bits/stdc++.h>
using namespace std;
const int Nmax = 1e5 + 5;
int n, m, S, i, x, y, lg[Nmax];
bool ap[Nmax];
queue <int> Q;
vector <int> G[Nmax];
void bfs()
{
ap[S] = true, lg[S] = 1, Q.push(S);
while (Q.size())
{
x = Q.front();
for (auto &it: G[x])
{
if (!ap[it]) lg[it] = lg[x] + 1, Q.push(it);
ap[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)
{
scanf("%d %d\n", &x, &y);
G[x].push_back(y);
}
bfs();
for (i = 1; i <= n; ++i)
printf("%d ", lg[i] - 1);
return 0;
}