Pagini recente » Cod sursa (job #387509) | Cod sursa (job #411410) | Cod sursa (job #2260883) | Cod sursa (job #1610051) | Cod sursa (job #705870)
Cod sursa(job #705870)
#include <cstdio>
#include <vector>
#include <queue>
#define maxn 100100
using namespace std;
vector <long> A[maxn];
queue <long> coada;
long C[maxn], G[maxn], nod, i, x, y, N, M, elc;
int main() {
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%ld %ld %ld", &N, &M, &nod);
for (i = 1; i <= M; ++i) {
scanf("%ld %ld", &x, &y);
A[x].push_back(y);
}
for (i = 1; i <= N; ++i) {
G[i] = A[i].size();
}
memset(C, -1, sizeof(C));
C[nod] = 0;
coada.push(nod);
for (; !coada.empty(); coada.pop()) {
elc = coada.front();
for (i = 0; i < G[elc]; ++i) {
if (C[ A[elc][i] ] == -1) {
C[ A[elc][i] ] = C[elc] + 1;
coada.push(A[elc][i]);
}
}
}
for (i = 1; i <= N; ++i) {
printf("%ld ", C[i]);
}
printf("\n");
return 0;
}