Cod sursa(job #2842934)

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

using namespace std;

struct data {
  bool seen = false;
  ll distance = -1;
  vector<ll> sz;
};

int main() {
  freopen("bfs.in", "r", stdin);
  freopen("bfs.out", "w", stdout);
  ll n, m, source;

  cin >> n >> m >> source;
  vector<data> g(n + 1);
  for (ll i = 1; i <= m; ++i) {
    ll a, b;
    cin >> a >> b;
    g[a].sz.push_back(b);
  }

  deque<ll> q;
  q.push_back(source);
  g[source].seen = true;
  g[source].distance = 0;

  while (!q.empty()) {
    ll current = q[0];
    q.pop_front();

    for (ll &el : g[current].sz) {
      if (g[el].seen == false) {
        g[el].seen = true;
        g[el].distance = g[current].distance + 1;

        q.push_back(el);
      }
    }
  }

  for (int i = 1; i <= n; i++) {
    cout << g[i].distance << " ";
  }
  return 0;
}