Pagini recente » Cod sursa (job #286112) | Cod sursa (job #2854797) | Cod sursa (job #369672) | Cod sursa (job #2684897) | Cod sursa (job #1556470)
#include <iostream>
#include <cstdio>
using namespace std;
const int dmax = 1000;
bool A[dmax+1][dmax+1];
int N, M, S;
int C[dmax+1];
int viz[dmax+1];
int main()
{
freopen("bfs.in", "r",stdin);
freopen("bfs.out", "w", stdout);
int i, x, y;
scanf("%d %d %d", &N, &M, &S);
for(i = 1; i <= M; i++)
{
scanf("%d %d", &x, &y);
A[x][y] = true;
}
for(i = 1; i <= N; i++) viz[i] = -1;
int p, u;
p = u = 1;
//INSERAM NODUL S CU COSTUL 0
C[1] = S; viz[S] = 0;
while(p <= u)
{
x = C[p];
for(i = 1; i <= N; i++)
if(viz[i] == -1 && A[x][i] == true)
{
u++;
C[u] = i;
viz[i] = 1 + viz[x];
}
p++;
}
for(i = 1; i <= N; i++) printf("%d ", viz[i]);
return 0;
}