Pagini recente » Cod sursa (job #2676003) | Cod sursa (job #1807490) | Cod sursa (job #217015) | Cod sursa (job #1260077) | Cod sursa (job #796067)
Cod sursa(job #796067)
#include <cstdio>
#include <vector>
using namespace std;
#define LMAX 100010
int N, M, S;
vector<int> V[LMAX];
int C[LMAX], Q[LMAX], viz[LMAX];
void bfs() {
int L = 1, I;
C[S]=0;
Q[0]=S;
viz[S]=true;
for (int i=0; i<L; ++i) {
I = Q[i];
for (int j=0, e=V[I].size(); j<e; ++j)
if (!viz[ V[I][j] ]) {
viz[V[I][j]] = true;
Q[L] = V[I][j];
C[Q[L++]] = C[I]+1;
}
}
}
int main () {
int x,y;
freopen("bfs.in","rt",stdin);
freopen("bfs.out","wt",stdout);
scanf("%d %d %d", &N, &M, &S);
for (int i=0; i<M; ++i) {
scanf("%d %d", &x, &y);
V[x].push_back(y);
}
bfs();
for (int i=1; i<=N; ++i)
if (!viz[i]) printf("-1 ");
else printf("%d ", C[i]);
return 0;
}