Pagini recente » Cod sursa (job #666726) | Cod sursa (job #2392012) | Cod sursa (job #133816) | Cod sursa (job #2790795) | Cod sursa (job #256104)
Cod sursa(job #256104)
#include <stdio.h>
#include <string.h>
#define NMAX 100010
int N, M, S, v[NMAX], q[NMAX];
struct nod
{
int info;
nod *next;
};
nod *p[NMAX];
void bfs()
{
int st, dr;
nod *r;
memset(v, -1, sizeof(v));
st = dr = 1;
q[1] = S;
v[S] = 0;
while ( st <= dr)
{
for ( r = p[q[st]]; r; r = r -> next)
if ( v[r -> info] == -1)
{
dr++;
q[dr] = r -> info;
v[r -> info] = v[ q[st] ] + 1;
}
++st;
}
}
int main()
{
int i, x, y;
nod *r;
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d %d %d", &N, &M, &S);
for ( i = 1; i <= M; i++)
{
scanf("%d %d", &x, &y);
r = new nod;
r -> info = y;
r -> next = p[x];
p[x] = r;
}
bfs();
for ( i = 1; i <= N; i++)
printf("%d ", v[i]);
printf("\n");
return 0;
}