Cod sursa(job #2001393)

Utilizator Narniuss08Bogdan Anghelache Narniuss08 Data 16 iulie 2017 16:31:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <cstring>

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

const int infinity = 999999;
const int dim_max = 100001;
int viz[dim_max], tata[dim_max], d[dim_max];
std::vector<int> vecin[dim_max];


void BFS(int s){

  std::queue<int>  Q;
  Q.push(s);
  viz[s] = 1;
  d[s] = 0;
  while(!Q.empty()){
    int i = Q.front();
    //fout<<d[i]<<" ";
    Q.pop();
    for(auto j : vecin[i]){
      if(!viz[j]){
        Q.push(j);
        viz[j] = 1;
        tata[j] = i;
        d[j] = d[i] + 1;
      }
    }
  }
}

int main(){

  int n, m ,s;
  fin>>n>>m>>s;
  std::memset(d, -1, sizeof(d));
  for(int i = 1 ; i <= m ; i++){
    int x, y;
    fin>>x>>y;
    vecin[x].push_back(y);
  }
  BFS(s);

  for(int i = 1 ; i <= n ; i++){
    fout<<d[i]<<" ";
  }
  return 0;
}