Cod sursa(job #2492984)

Utilizator NMadrianNechiti Mihai Adrian NMadrian Data 15 noiembrie 2019 19:14:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include  <fstream>
#include  <vector>
//using namespace std ;
std:: ifstream in("bfs.in");
std:: ofstream out("bfs.out");

const int NMAX=100005;
int N , M,sol[NMAX],U;
bool vizitat[NMAX];

std:: vector <int> muchii[NMAX];


void initializare(){
for(int i=1; i<= NMAX;i++)
    sol[i]=-1;
}

void BFS(){
int coada[NMAX],k=0;

coada[0]=U,sol[U]=0,vizitat[U]=true;

for(int i = 0 ;i<=k;i++)
    {

for(unsigned int j = 0 ;j< muchii[coada[i]].size();j++)
   if(vizitat[muchii[coada[i]][j]]==false)
   coada[++k]=muchii[coada[i]][j],
   sol[muchii[coada[i]][j]] = sol[coada[i]]+1,
   vizitat[muchii[coada[i]][j]]=true;
}
}


void citire(){
in >> N >> M >> U;

for(int i=1;i<=M;i++)
  {
    int x , y ;

    in >> x>> y;
if(x!=y)
    muchii[x].push_back(y);

    }
}
int main(){
initializare();
citire();
BFS();

for(int i =1;i<=N;i++)
   out<<sol[i]<<" ";
return 0;
}