Cod sursa(job #295217)

Utilizator spidyvenomMarius Toma spidyvenom Data 3 aprilie 2009 08:50:39
Problema BFS - Parcurgere in latime Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream.h>   
#define nmax 100001   
int s,n,i,v[nmax],cd[nmax],lg[nmax];
long m;
ifstream f("bfs.in");
ofstream g("bfs.out");   
  
struct nod   
    {int z;   
    nod *adr;};   
nod *l[nmax],*c;   
  
void citire()   
{   
int i,j;   
for (i=1;i<=m;i++) l[i]=NULL;   
while (f>>i>>j)   
    {   
    c=new nod;   
    c->z=j;   
    c->adr=l[i];   
    l[i]=c;   
    }   
}   
  
void bfs(int x)   
{   
int z,p,u;
for (int i=1;i<=n;i++) lg[i]=-1;
//memset(lg,-1,sizeof(lg));
lg[x]=0;
p=u=1;
v[x]=1;
cd[p]=x;
for (lg[x]=0;p<=u;p++)
    {
    z=cd[p];
    for (c=l[z];c!=NULL;c=c->adr)
	if (!v[c->z])
	    {
	    cd[++u]=c->z;
	    v[cd[u]]=1;
	    lg[c->z]=lg[z]+1;
	    }
    }
}


int main()
{
f>>n>>m>>s;
citire();
bfs(s);
for (i=1;i<=n;i++) g<<lg[i]<<" ";
g.close();
return 0;
}