Cod sursa(job #789953)

Utilizator preg_concursPregatire Concurs preg_concurs Data 19 septembrie 2012 22:27:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<fstream>

using namespace std;

typedef struct no{

  int val;
  no *urm;
} nod;

 nod *vecini[100001];

long dist[100001];


void bf(int k){

   long coada[100001],start,final;
   nod *aux;
   coada[1]=k;
   start=1;
   final=1;

   dist[coada[start]]=0;
   while(start<=final){

        aux=vecini[coada[start]];
        while(aux){
            if(dist[aux->val]==0){
            coada[++final]=aux->val;

          dist[coada[final]]=dist[coada[start]]+1;
          }
            aux=aux->urm;
        }



    start++;

   }

}


int main()
{
   int n,m,s,i,x,y;
   ifstream f("bfs.in");
   ofstream g("bfs.out");

   f>>n>>m>>s;

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


   nod *aux=new nod;
   aux->val=y;
   aux->urm=vecini[x];
   vecini[x]=aux;
   }

   bf(s);
   for(i=1;i<=n;i++)
     if(i==s)
        g<<0<<" ";
        else
     if(dist[i]==0)
       g<<"-1"<<" ";
       else

       g<<dist[i]<<" ";






    return 0;
}