Cod sursa(job #2461333)

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

#include<fstream>

using namespace std;

ifstream f ("bfs.in");

ofstream g ("bfs.out");

int t[3][500003],i,j,n,m,s,k,start[100003],sol[100003],cost[100003],p,u,coada[100003],element,fr[100003];

bool a[100003][100003];

int main()

{

 f>>n>>m>>s;

 while(m!=0)

 {

     f>>i>>j;

     if(i!=j)

     if(a[i][j]==0)

     {

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



}