Mai intai trebuie sa te autentifici.

Cod sursa(job #789945)

Utilizator preg_concursPregatire Concurs preg_concurs Data 19 septembrie 2012 22:17:32
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 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,cont;
   nod *aux;
   coada[1]=k;
   start=1;
   final=1;
   cont=1;
   while(start<=final){

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

          dist[coada[final]]=cont;
          }
            aux=aux->urm;
        }

     cont++;

    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;
}