Cod sursa(job #449221)

Utilizator Antika89noname Antika89 Data 5 mai 2010 21:58:42
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int n,m,s,c[100001][10001],x,y,d[100001],st[100001],viz[100001];
void citire()
{in>>n>>m>>s;
for(int i=1;i<=m;i++)
 {in>>x>>y;
 c[x][0]++;c[x][c[x][0]]=y;
 }
for(int i=1;i<=n;i++) d[i]=0;

}
void bfs()
{int i,prim,ultim;
viz[s]=1;
prim=ultim=0;
st[0]=s;
while(prim<=ultim)
{x=st[prim++];
for(i=1;i<=c[x][0];i++)
if(!viz[c[x][i]])
{d[c[x][i]]=d[x]+1;
viz[c[x][i]]=1;
st[++ultim]=c[x][i];
}

}

}
int main()
{ citire();d[s]=0;st[0]=s;
bfs();
for(int i=1;i<=n;i++) {if(i!=s && d[i]==0){d[i]=-1;}out<<d[i]<<" "; }


      return 0;
}