Cod sursa(job #957966)

Utilizator dumitra_cristianDumitra Cristian dumitra_cristian Data 6 iunie 2013 17:42:27
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include<fstream>
#include<cstdio>

using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
long a[10000][10000],p,nod,q[10000],t[10000],lg[10000],u;
bool sel[10000];
long n,m;
void bf(int x)
{ long i;
  sel[x]=true; q[1]=x; t[x]=0;
  lg[x]=0; p=u=1;
  while(p<=u)
   { nod=q[p];
     for(i=1;i<=n;i++)
       if(a[nod][i]&&!sel[i])
        { q[++u]=i;
          t[i]=nod; sel[i]=true;
          lg[i]=lg[nod]+1;

        }
      p++;
   }
   for(i=1;i<=n;i++) if(!sel[i]) lg[i]=-1;

}

int main()
{ int i,j,z,y,x;
  f>>n;
  f>>m;
  f>>x;
  for(i=1;i<=m;i++)
    { f>>z;
      f>>y;
      a[z][y]=1;
    }
  bf(x);
 for(i=1;i<=n;i++)
   g<<lg[i]<<" ";
 f.close(); g.close();
    return 0;
}