Cod sursa(job #2378558)

Utilizator susanuradu1999Susan Radu susanuradu1999 Data 12 martie 2019 13:45:26
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <queue>
#include <fstream>

using namespace std;

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

int n,v[10001],k=1;
queue <int> m[10001];
int coada[10001],d[10001];

void BFS(int x)
{
 int st=1,dr=1,vecin;
 coada[1]=x;
 v[x]=1;
 d[x]=0;
 while(st<=dr)
 {
  x=coada[st];

  while(!m[x].empty())
    {
     vecin=m[x].front();
     if(v[vecin]==0)
     {
      v[vecin]=1;
      d[vecin]=d[x]+1;
      k++;dr++;
      coada[k]=vecin;
     }
     m[x].pop();
    }
  st++;
 }

}


int main()
{
 int mu,x,i,a,b;
 fin>>n>>mu>>x;

 for(i=1;i<=n;i++)
    d[i]=-1;

 for(i=1;i<=mu;i++)
 {
  fin>>a>>b;
  m[a].push(b);
 }



 BFS(x);
 for(i=1;i<=n;i++)
    fout<<d[i]<<" ";





    return 0;
}