Pagini recente » Cod sursa (job #1018513) | Cod sursa (job #2636290) | Cod sursa (job #1634996) | Cod sursa (job #59167) | Cod sursa (job #650996)
Cod sursa(job #650996)
#include <cstdio>
#include <vector>
using namespace std;
#define NMAX 100050
int Q[NMAX], C[NMAX], viz[NMAX], S, n, m, nod, fiu, i, p, u, x, y;
vector <int> G[NMAX];
vector <int>::iterator it;
int main () {
freopen ("bfs.in", "r", stdin);
freopen ("bfs.out", "w", stdout);
scanf ("%d %d %d", &n, &m, &S);
for (i = 1; i <= m; i++) {
scanf ("%d %d", &x, &y);
G[x].push_back (y);
}
Q[1] = S, viz[S] = 1;
for (p = u = 1; p <= u; p++) {
nod = Q[p];
for (it = G[nod].begin (); it != G[nod].end (); it++) {
fiu = *it;
if (!viz[fiu])
Q[++u] = fiu, C[fiu] = C[nod] + 1, viz[fiu] = 1;
}
}
for (i = 1; i <= n; i++)
if (viz[i])
printf ("%d ", C[i]);
else
printf ("-1 ");
return 0;
}