Cod sursa(job #588209)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 7 mai 2011 11:48:34
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream.h>
#define N 100001
#define M 1000001
int main()
{long n,m,s,k,i,j,d[N],c[N]={0},p=0,u=0,q[M],a[M],b[M],*g[N],deg[N]={0};
ifstream f("bfs.in");
ofstream h("bfs.out");
f>>n>>m>>s;
for(k=1;k<=m;k++)
      {f>>a[k]>>b[k];
      deg[a[k]]++;}
for(i=1;i<=n;deg[i++]=0)
      {d[i]=N;
      g[i]=(long*)malloc(deg[i]*sizeof(long));}
for(j=1;j<=m;j++)
      g[a[j]][deg[a[j]]++]=b[j];
c[s]=1;
d[s]=0;
q[u++]=s;
while(p!=u)
      {i=q[p++];
      for(k=0;k<deg[i];k++)
      if(!c[g[i][k]])
            d[g[i][k]]=d[i]+1,c[g[i][k]]=1,q[u++]=g[i][k];}
for(i=1;i<=n;i++)
if(d[i]==N)
      h<<"-1 ";
else
      h<<d[i]<<" ";
f.close();
h.close();
return 0;}