Pagini recente » Cod sursa (job #3229510) | Cod sursa (job #3286696) | Cod sursa (job #3289185) | Cod sursa (job #3275201) | Cod sursa (job #223157)
Cod sursa(job #223157)
#include <stdio.h>
#include <string>
#define maxn 1010
int N, M, Start, L;
char A[maxn][maxn];
int Cost[maxn], S[maxn];
void BFS(int nod)
{
int i, j;
memset(Cost, -1, sizeof(Cost));
L = 1;
S[L] = nod;
Cost[nod] = 0;
for (i = 1; i <= L; i++)
for (j = 1; j <= N; j++)
if (Cost[j]==-1 && A[S[i]][j])
{
S[++L] = j;
Cost[j] = Cost[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);
A[x][y] = 1;
}
BFS(Start);
for (i = 1; i <= N; i++) printf("%d ", Cost[i]);
printf("\n");
return 0;
}