Cod sursa(job #1475768)

Utilizator cristinelulCristian Virga cristinelul Data 24 august 2015 12:31:42
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int n,m,x,d[100001],g[1001][1001],viz[100001];
void citire()
{
   int i,a,b;
   fin>>n>>m>>x;
   for(i=1;i<=m;i++)
   {
      fin>>a>>b;
      g[a][0]++;
      g[a][g[a][0]]=b;
   }
   for(i=1;i<=n;i++)
      d[i]=-1;
   d[x]=0;
}
void bfs(int x)
{
   int c[100001],p=1,u=1,nod,i,v;
   c[u]=x;
   while(p<=u)
   {
      nod=c[p];
      viz[nod]=1;
      p++;
      for(i=1;i<=g[nod][0];i++)
      {
         v=g[nod][i];
         if(viz[v]==0)
         {
            c[++u]=v;
            viz[v]=1;
            d[v]=d[nod]+1;
         }
      }
   }
}
int main()
{
   int i;
   citire();
   bfs(x);
   for(i=1;i<=n;i++)
      fout<<d[i]<<' ';
   fout.close();
   return 0;
}