Pagini recente » Cod sursa (job #765420) | Clasamentul arhivei de probleme | Cod sursa (job #765378) | Cod sursa (job #765361) | Cod sursa (job #765380)
Cod sursa(job #765380)
#include<cstdio>
#define N 100001
int n,m,s,d[N],*g[N],w[N],a[10*N],b[10*N],q[10*N],p,u,i,j;
int main()
{freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for(i=1;i<=m;i++)
scanf("%d%d",&a[i],&b[i]),w[a[i]]++;
for(i=1;i<=n;w[i++]=0)
d[i]=N,g[i]=new int[w[i]];
for(i=1;i<=m;i++)
g[a[i]][w[a[i]]++]=b[i];
d[s]=0,q[u++]=s;
while(p<u)
{i=q[p++];
for(j=0;j<w[i];j++)
if(d[g[i][j]]>d[i]+1)
d[g[i][j]]=d[i]+1,q[u++]=g[i][j];}
for(i=1;i<=n;i++)
printf("%d ",d[i]==N?(-1):d[i]);
return 0;}