Pagini recente » Cod sursa (job #2396314) | Cod sursa (job #1079314) | Cod sursa (job #953548) | Cod sursa (job #3229372) | Cod sursa (job #1025753)
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
#define LMAX 100010
int N, M, S, L;
vector<int> V[LMAX];
int Q[LMAX], C[LMAX];
bool viz[LMAX];
void bsf() {
Q[0] = S;
L = 1;
viz[S] = true;
C[S] = 0;
int nod;
for (int i=0; i<L; ++i) {
nod = Q[i];
for (int j=0, e = V[nod].size(); j<e; ++j) {
if (!viz[V[nod][j]]) {
viz[V[nod][j]] = true;
Q[L] = V[nod][j];
C[Q[L]] = C[nod] + 1;
++L;
}
}
}
}
void citire() {
scanf("%d %d %d", &N, &M, &S);
for (int x, y; M; --M) {
scanf("%d %d", &x, &y);
V[x].push_back(y);
}
}
int main () {
freopen("bfs.in","rt",stdin);
freopen("bfs.out","wt",stdout);
memset(C, -1, sizeof(C));
citire();
bsf();
for (int i=1; i<=N; ++i)
printf("%d ", C[i]);
return 0;
}