Cod sursa(job #727536)

Utilizator I.AlexandruIlie Alexandru I.Alexandru Data 28 martie 2012 01:56:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
#define maxn 100001
using namespace std;

struct pnod{
int info;
pnod *next;
};

pnod *lv[maxn];
int n, s, x, y, prim=0, ultim=0, varf, c[maxn], dist[maxn];

void adauga(int x, int y)
{pnod *aux=new pnod;
aux->info=y;
aux->next=lv[x-1];
lv[x-1]=aux;
}

void bf(int x)
{for(int i=0; i<n; i++)
    dist[i]=-1;

dist[x-1]=0;
c[prim]=x;          

for( ; prim<=ultim; prim++)
   {varf=c[prim];
    for(pnod *aux=lv[varf-1]; aux; aux=aux->next)
       if(dist[aux->info-1]==-1)
         {c[++ultim]=aux->info;
          dist[aux->info-1]=dist[varf-1]+1;
         }       
   }     
}

int main()
{ifstream f("bfs.in");
ofstream g("bfs.out");

f>>n>>s>>s;
for(; f>>x>>y; )
   adauga(x, y);    
   
bf(s);
  
for(int i=0; i<n; i++)
   g<<dist[i]<<" ";   
        
return 0;    
}