Pagini recente » Cod sursa (job #1222860) | Cod sursa (job #857941) | Cod sursa (job #16706) | Cod sursa (job #1791998) | Cod sursa (job #901503)
Cod sursa(job #901503)
#include<stdio.h>
int n,m,s,start[100002],l[2][1000002],viz[100002];
void bf(int vf)
{
int i,pr=1,ul=1,coada[100002],v;
for(i=1;i<=n;i++) viz[i]=-1;
viz[vf]=0;
coada[pr]=vf;
while(pr<=ul)
{
v=coada[pr];
for(i=start[v];i;i=l[1][i])
{
if(viz[l[0][i]]==-1 && l[0][i]!=0)
{
++ul;
coada[ul]=l[0][i];
viz[l[0][i]]=viz[v]+1;
}
}
++pr;
}
}
int main()
{
int i,x,y,k=0;
freopen("bfs.in","rt",stdin);
freopen("bfs.out","wt",stdout);
scanf("%d%d%d",&n,&m,&s);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
++k;
l[0][k]=y;
l[1][k]=start[x];
start[x]=k;
}
bf(s);
for(i=1;i<=n;++i)
{
printf("%d ",viz[i]);
}
fclose(stdin);
fclose(stdout);
return 0;
}