Cod sursa(job #285921)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 23 martie 2009 10:43:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
#include<string.h>
using namespace std;

struct nod {  int inf; nod *adr;} ;
nod *v[100010];
int i,x,y,m,start,n,cost[100010],s[100010];
void add(int i, int j)
 { nod *c;

   c=new nod;
   c->inf=j;
   c->adr=v[i];
   v[i]=c;
 }
void bfs(int x)
{
  int i,L;
  nod *p;
  memset(cost,-1,sizeof(cost));
  L=1;
  s[L]=x; cost[x]=0;

   for(i=1;i<=L;i++)

    for(p=v[s[i]];p;p=p->adr)

      if(cost[p->inf]==-1)

        { s[++L]=p->inf;
          cost[s[L]]=cost[s[i]]+1;
        }
}
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>m>>start;

for(i=1;i<=m;i++) { f>>x>>y; add(x,y); }

bfs(start);

for(i=1;i<=n;i++) g<<cost[i]<<" ";

f.close();
g.close();
return 0;
}