Cod sursa(job #2487961)

Utilizator ValentinStStamate Valentin ValentinSt Data 5 noiembrie 2019 21:49:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

#define NMAX 100001

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

vector<int> v[NMAX];
bool viz[NMAX];
int dist[NMAX];
int n;


void bfs(int start);

int main(){

  int m, s;

  in>>n>>m>>s;

  for(int i = 0; i < m; i++){
    int x, y;
    in>>x>>y;
    v[x].push_back(y);
  }
  

  for(int i = 1; i <= n; i++){
    dist[i] = -1;
  }

  bfs(s);
  for(int i = 1; i <= n; i++){
    out<<dist[i]<<" ";
  }

  return 0;
}

void bfs(int start){
  queue<int> q;

  q.push(start);
  viz[start] = true;

  dist[start] = 0;

  while( !q.empty() ){
    int node = q.front();
    q.pop();

    for(int i = 0; i < v[node].size(); i++){
      int n = v[node].at(i);
      if(!viz[n]){
        dist[n] = dist[node] + 1;
        viz[n] = true;
        q.push(n);
      }
    }
  }

}