Pagini recente » Cod sursa (job #2855540) | Cod sursa (job #352470) | Cod sursa (job #2457244) | Cod sursa (job #55145) | Cod sursa (job #253589)
Cod sursa(job #253589)
#include<stdio.h>
# define nmax 100001
#define mmax 1000001
int n,m,nod,o,i,j,st,sf,s[nmax],li[2][mmax],c[nmax],viz[nmax],gr[nmax],q;
int main()
{freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&nod);
int k=1;
for(o=1;o<=m;o++)
{ scanf("%d%d",&i,&j);
li[0][k]=j;
li[1][k]=s[i];
s[i]=k;
k++;
}
c[1]=nod;
viz[nod]=1;
st=sf=1;
while(st<=sf)
{ q=s[c[st]];
while(li[1][q]!=0)
{ if(viz[li[0][q]]==0)
{ c[++sf]=li[0][q];
gr[li[0][q]]=gr[c[st]]+1;
}
q=li[1][q];
}
if(viz[li[0][q]]==0)
{ c[++sf]=li[0][q];
gr[li[0][q]]=gr[c[st]]+1;
}
st++;
}
for(i=1;i<=n;i++)
if(gr[i]==0&&i!=nod)
printf("-1 ");
else printf("%d ",gr[i]);
return 0;}