Cod sursa(job #2660050)

Utilizator cristi_macoveiMacovei Cristian cristi_macovei Data 18 octombrie 2020 00:59:40
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <unordered_set>

const int NMAX = 1e5;

int n, m, s;
int dist[1 + NMAX];
std::unordered_set<int> adj[1 + NMAX];

void read() {
  std::ifstream in("bfs.in");

  in >> n >> m >> s;
  int x, y;
  while (in >> x >> y)
    adj[x].insert(y);

  in.close();
}

int main() {
  read();

  std::queue<int> bfs;
  bfs.push(s);
  dist[s] = 1;

  while (!bfs.empty()) {
    auto fr = bfs.front();
    bfs.pop();

    for (int i : adj[fr]) {
      if (dist[i] == 0) {
        dist[i] = dist[fr] + 1;
        bfs.push(i);
      }
    }
  }

  std::ofstream out("bfs.out");
  for (int i = 1; i <= n; ++i)
    out << dist[i] - 1 << ' ';

  out.close();
  return 0;
}