Cod sursa(job #2842917)

Utilizator utrimique_trebusUtrimiqueTrebus utrimique_trebus Data 1 februarie 2022 18:26:05
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <deque>
#include <fstream>
#include <iostream>
#include <vector>
typedef long long ll;

using namespace std;

int main() {
  ios::sync_with_stdio(0);
  ifstream in("bfs.in");
  ofstream out("bfs.out");
  ll n, m, source;

  in >> n >> m >> source;

  vector<vector<ll>> graph(n + 1, vector<ll>());
  vector<ll> solve(n + 1, -1);
  vector<bool> visited(n + 1, false);

  for (ll i = 0; i < m; ++i) {
    ll a, b;
    in >> a >> b;
    graph[a].push_back(b);
  }

  deque<pair<ll, ll>> q;
  q.push_front({source, 0});
  visited[source] = true;

  while (!q.empty()) {
    pair<ll, ll> current = q[0];
    solve[current.first] = current.second;
    q.pop_front();

    for (ll &el : graph[current.first]) {
      if (!visited[el]) {
        visited[el] = true;
        q.push_back({el, current.second + 1});
      }
    }
  }

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