Cod sursa(job #765380)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 7 iulie 2012 13:34:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#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;}