Pagini recente » Cod sursa (job #1951517) | Cod sursa (job #988853) | Cod sursa (job #653530) | Cod sursa (job #35927) | Cod sursa (job #1707545)
# include <bits/stdc++.h>
using namespace std;
const int Nmax = 100000 + 5;
int n, m, s, x, y, lg[Nmax];
bool ap[Nmax];
queue <int> Q;
vector <int> G[Nmax];
void read()
{
for (int i = 1; i <= m; ++i)
{
scanf("%d %d\n", &x, &y);
G[x].push_back(y);
}
}
void bfs()
{
memset(ap, false, sizeof(ap));
Q.push(s);
x = Q.front(), ap[x] = true, lg[x] = 0;
while (Q.size())
{
x = Q.front();
for (int i = 0; i < G[x].size(); ++i)
{
if (!ap[G[x][i]])
{
Q.push(G[x][i]);
lg[G[x][i]] = lg[x] + 1;
ap[G[x][i]] = true;
}
}
Q.pop();
}
}
int main ()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d\n", &n, &m, &s);
read();
bfs();
for (int i = 1; i <= n; ++i)
if (i == s) printf("0 ");
else if (lg[i] == 0) printf("-1 ");
else printf("%d ", lg[i]);
printf("\n");
return 0;
}