Pagini recente » Cod sursa (job #368140) | Cod sursa (job #619419) | Cod sursa (job #1465953) | Cod sursa (job #1625860) | Cod sursa (job #412484)
Cod sursa(job #412484)
# include <stdio.h>
long n,m,s,i,a,b,inc,sf;
long q[100005],viz[100005];
struct nod
{ nod* urm;
long info;
};
nod *top[100005];
void read ()
{ nod *p;
for (i=1;i<=m;i++)
{scanf ("%ld %ld", &a, &b);
p=new nod;
p->urm=top[a];
p->info=b;
top[a]=p;
}
}
void bfs()
{nod *p;
viz[s]=0;
inc=sf=1;
q[1]=s;
while (inc<=sf)
{p=top[q[inc]];
while (p)
{if (viz[p->info]==-1)
{q[++sf]=p->info;
viz[p->info]=viz[q[inc]]+1;
}
p=p->urm;
}
inc++;
}
}
void afisare ()
{ for (i=1;i<=n;i++)
printf ("%ld ",viz[i]);
}
int main()
{ freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
scanf ("%ld %ld %ld",&n,&m,&s);
read();
for (i=1;i<=n;i++)
viz[i]=-1;
bfs ();
afisare();
return 0;
}