Pagini recente » Cod sursa (job #2936469) | Cod sursa (job #2113714) | Cod sursa (job #2068828) | Cod sursa (job #1737330) | Cod sursa (job #333349)
Cod sursa(job #333349)
#include<stdio.h>
long n,m,s;
struct nod
{int nd;
nod *next;};
nod *L[100010];
long q[100010];
long viz[100010];
long st, dr,i;
void add(int nr_nod)
{
nod *p=L[nr_nod];
nod *c=p;
while(c)
{
if(viz[c->nd]==0 && c->nd!=s)
{
q[++dr]=c->nd;
viz[q[dr]]=viz[nr_nod]+1;
}
c=c->next;
}
}
void lee()
{
st=dr=1;
q[1]=s;
while(st<=dr)
{
add(q[st]);
st++;
}
}
void print()
{
for(i=1;i<=n;++i)
if(viz[i]==0 && i!=s) printf("-1 ");
else
printf("%ld ",viz[i]);
printf("\n");
}
int main()
{
long x,y;
nod *p;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%ld%ld%ld",&n,&m,&s);
for(i=1;i<=m;++i)
{
scanf("%ld%ld",&x,&y);
if(x!=y)
{
p=new nod;
p->nd=y;
p->next=L[x];
L[x]=p;
}
}
lee();
print();
return 0;
}