Cod sursa(job #2388420)

Utilizator susanuradu1999Susan Radu susanuradu1999 Data 26 martie 2019 01:20:27
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

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

int n,k=1;
vector <int> m[100001];
int coada[100001],d[100001];

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

  while(!m[x].empty())
    {
     vecin=m[x].back();
     if(d[vecin]==-1)
     {

      d[vecin]=d[x]+1;
      k++;dr++;
      coada[k]=vecin;
     }
     m[x].pop_back();
    }
  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_back(b);
 }

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

    return 0;
}