Cod sursa(job #2461328)

Utilizator eusebiu_alexandruMorar Eusebiu eusebiu_alexandru Data 25 septembrie 2019 13:51:13
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
int t[3][50003],i,j,n,m,s,k,start[100003],sol[100003],cost[100003],p,u,coada[100003],element,fr[100003];
bool a[103][103];
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<<" ";

}