Cod sursa(job #2837078)

Utilizator backleventeBack Levente backlevente Data 21 ianuarie 2022 18:02:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <deque>
#include <vector>

using namespace std;

#define ll long long

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

struct element {
  bool seen = false;
  vector <ll> sz;
  ll step = -1;
};

ll N, M, S;

int main(){
  fin >> N >> M >> S;

  vector <element> x(N+1);

  for(ll a, b, i = 1; i <= M; ++i){
    fin >> a >> b;
    x[a].sz.push_back(b);
    //x[b].sz.push_back(a);
  }

  deque <ll> v;

  x[S].seen = true;
  x[S].step = 0;
  v.push_back(S);

  while(!v.empty()){
    int act = v[0];
    v.pop_front();

    for(auto& i : x[act].sz)
      if(!x[i].seen){
        x[i].seen = true;
        x[i].step = x[act].step + 1;
        v.push_back(i);
      }    
  }
  
  for(ll i = 1; i <= N; ++i){
    fout << x[i].step << ' ';
  } 
  

  return 0;
}