Cod sursa(job #2461422)

Utilizator eusebiu_alexandruMorar Eusebiu eusebiu_alexandru Data 25 septembrie 2019 17:56:07
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>



#include<fstream>



using namespace std;



ifstream f ("bfs.in");



ofstream g ("bfs.out");



int t[3][2000003],i,j,n,m,s,k,start[200003],sol[200003],cost[200003],p,u,coada[200003],element,fr[200003];
int main()



{



 f>>n>>m>>s;



 while(m!=0)



 {



     f>>i>>j;



     if(i!=j)




     {



         k++;



         t[0][k]=j;



         t[1][k]=start[i];



         start[i]=k;



         a[i][j]=1;


     }

    m--;



 }



p=1,u=1,coada[p]=s;



fr[coada[p]]=1;



while(p<=u)



{



    element=coada[p];



     int nr=0;



   int    coloana=start[element];



    while(coloana!=0)



    {



        sol[++nr]=t[0][coloana];



        coloana=t[1][coloana];



    }



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



   {



     if(fr[sol[i]]==0)



     coada[++u]=sol[i],cost[sol[i]]=cost[coada[p]]+1,fr[sol[i]]=1;



   }



   p++;



}



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



       if(cost[i]!=0 || i==s)



        g<<cost[i]<<" ";



      else



        g<<-1<<" ";


}