Cod sursa(job #2568795)

Utilizator dsandru89Sandru Daniel Cornel dsandru89 Data 4 martie 2020 09:54:14
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int NLIM=100005;
int n,m,s;
int distanta[NLIM];

vector <int> muchii[NLIM];
queue <int> coada;
void citire()
{   fin>>n>>m>>s;
for(int i=1;i<=m;i++){
    int x,y;
    fin>>x>>y;
    muchii[x].push_back(y);
}

 for(int i=1;i<=n;i++)distanta[i]=-1;
      distanta[s]=0;
}

void BFS(){

    int nod,vecin;
   while(!coada.empty()){
     nod=coada.front();
     coada.pop();
     for(unsigned int i=0;i<muchii[nod].size();i++){
        vecin = muchii[nod][i];
        if(distanta[vecin]==-1){coada.push(vecin);
        distanta[vecin]=distanta[nod]+1;}
     }
   }
}

int main()
{
   citire();
   coada.push(s);
   BFS();
   for(int i=1;i<=n;i++)fout<<distanta[i]<<" ";

    return 0;
}