Pagini recente » Cod sursa (job #2935617) | Cod sursa (job #1393722) | Cod sursa (job #1742217) | Cod sursa (job #183346) | Cod sursa (job #1011129)
#include<stdio.h>
#define N 100001
struct nod{int info;
nod *urm;} *lista[N], *p;
int sol[N], coada[N], vf;
void BFS(int vf)
{
int prim, ultim, nod_cur;
for(int i = 1; i <= N; i++)
sol[i] = -1, coada[i] = 0;
prim = ultim = 1;
coada[prim] = vf;
sol[vf] = 0;
while(prim <= ultim)
{
nod_cur = coada[prim];
for(p = lista[nod_cur]; p; p = p->urm)
if(sol[p->info] == -1)
{
coada[++ultim] = p->info;
sol[p->info] = sol[nod_cur] + 1;
}
prim++;
}
}
int main()
{
freopen("bfs.in","r", stdin);
freopen("bfs.out","w", stdout);
int i, n, m, x, y;
scanf("%d %d %d", &n, &m, &vf);
for(i = 1; i <= m; i++)
{
scanf("%d %d", &x, &y);
p = new nod;
p->info = y;
p->urm = lista[x];
lista[x] = p;
}
BFS(vf);
for(i = 1; i <= n; i++)
printf("%d ", sol[i]);
return 0;
}