Cod sursa(job #244144)

Utilizator Snavenportnespecificat Snavenport Data 14 ianuarie 2009 17:14:17
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream.h>

#define infile "bfs.in"
#define outfile "bfs.out"
#define Nmax 40000


ifstream f(infile);
ofstream g(outfile);

char lista[Nmax][Nmax];
int viz[Nmax],c[Nmax],s,n,m;

void citire()
{
    int i,j,l;
    f>>n>>m>>s;
    for (l=1;l<=m;l++)
      {
      f>>i>>j;
      lista[i][j]=1;
      }
    f.close();

}

void BFS(int start)
{
    int i,st,dr;
    viz[start]=1;
    c[1]=start;
    st=1,dr=1;
    while (st<=dr)
     {
         start=c[st++];
         for (i=1;i<=n;i++)
            if (lista[start][i] && !viz[i])
               {
                   c[++dr]=i;
                   viz[i]=viz[start]+1;
               }
     }
}

int main()
{
    int i,j;
    citire();
    BFS(s);
    for (i=1;i<=n;i++)
      if (viz[i])
        g<<viz[i]-1<<" ";
      else
        g<<-1<<" ";
    return 0;
}