Cod sursa(job #2031976)

Utilizator OldpugAlex Ionescu Oldpug Data 4 octombrie 2017 09:57:04
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
#include <climits>
#define var auto

int main()
{
  std::ifstream in("bfs.in");

  int n, m, s;
  in >> n >> m >> s;

  var graph = new std::vector<int>[n];
  for (var i = 0; i < m; ++i)
  {
    int src, tgt;
    in >> src >> tgt;
    graph[i].push_back(tgt);
  }

  var dst = new int[n];
  std::memset(dst, INT_MAX, sizeof dst);
  dst[s] = 0;

  std::queue<int> que;
  que.push(s);
  
  while (!que.empty())
  {
    var crr = que.front();
    que.pop();
    var newdst = dst[crr] + 1;

    for (var adj : graph[crr])
      if (dst[adj] > newdst)
      {
        dst[adj] = newdst;
        que.push(adj);
      }
  }

  std::ofstream out("bfs.out");
  for (var dist : dst)
    out << dist << ' ';
}