Pagini recente » Cod sursa (job #703057) | Cod sursa (job #2801684) | Cod sursa (job #1518973) | Cod sursa (job #1066038) | Cod sursa (job #901427)
Cod sursa(job #901427)
#include<stdio.h>
int n,m,s,start[100002],l[2][1000002],viz[100002];
void bf(int vf,int x)
{
int i,pr=1,ul=1,coada[100002],v;
for(i=1;i<=n;i++) viz[i]=0;
viz[vf]=1;
coada[pr]=vf;
while(pr<=ul)
{
v=coada[pr];
for(i=start[v];i;i=l[1][i])
{
if(viz[l[0][i]]==0)
{
++ul;
coada[ul]=l[0][i];
viz[l[0][i]]=viz[v]+1;
}
if(l[0][i]==x)
{
pr=ul+1;
break;
}
}
++pr;
}
printf("%d ",viz[x]-1);
}
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;
}
for(i=1;i<=n;++i)
{
if(i==s) printf("0 ");
else bf(s,i);
}
fclose(stdin);
fclose(stdout);
return 0;
}