Cod sursa(job #2123772)

Utilizator DR27092000Bilcu Dragos Gabriel DR27092000 Data 6 februarie 2018 16:55:38
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int viz[1001],c[1001],a[101][101],n,m,s,p[1001],prim=1,ultim=1,varf;
void citire()
{
    f>>n>>m>>s;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        f>>x>>y;
        a[x][y]=1;
    }


}
void bf_recursiv() //parcurgerea in latime
{int k;

if(prim<=ultim)
  {varf=c[prim];
   for(k=1;k<=n;k++)
      if(a[varf][k]==1 && viz[k]==0) //il adaug pe k in coada daca este vecin pt. varf si nu a fost vizitat
            {
               ultim++;c[ultim]=k;p[k]=p[varf]+1;viz[k]=1;
            }
   prim++;
   bf_recursiv();
   }
}


int main()
{citire();
c[1]=s;viz[s]=1;
bf_recursiv();
for(int i=1;i<=n;i++)
    if(i!=s && !p[i]) p[i]=-1;
for(int i=1;i<=n;i++)
    g<<p[i]<<" ";
    return 0;
}