Pagini recente » Cod sursa (job #3282503) | Cod sursa (job #767351) | Cod sursa (job #2959741) | Cod sursa (job #467942) | Cod sursa (job #2258996)
#include <stdio.h>
#include <vector>
using namespace std;
#define NMAX 100100
int N, M, Start, L;
vector<int> X[NMAX];
int C[NMAX], S[NMAX], G[NMAX];
void BFS(int nodc)
{
int i, j;
for(int i = 1; i <= N; i++)
C[i] = -1;
L = 1;
S[L] = nodc;
C[nodc] = 0;
for(i = 1; i <= L; ++i)
for(j = 1; j < G[S[i]]; ++j)
if(C[X[S[i]][j]] == -1) {
L++;
S[L] = X[S[i]][j];
C[S[L]] = C[S[i]] + 1;
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i, x, y;
scanf("%d %d %d", &N, &M, &Start);
for(i = 1; i <= M; ++i) {
scanf("%d %d", &x, &y);
X[x].push_back(y);
}
BFS(Start);
for(i = 1; i <= N; ++i)
printf("%d ", C[i]);
printf("\n");
return 0;
}