Cod sursa(job #2737511)

Utilizator bogdanvladmihaiBogdan Vlad-Mihai bogdanvladmihai Data 4 aprilie 2021 20:12:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

#define debug(x) cerr << #x << " = " << x << "\n";

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

const int inf = (int)1e9 + 7;
const int max_n = (int)1e5 + 5;

int n, m, x;

vector<int> g[max_n];

int d[max_n];

bool visited[max_n];

int main() {
  in >> n >> m >> x;
  for (int i = 1; i <= m; i++) {
    int u, v;
    in >> u >> v;
    g[u].push_back(v);
  }
  fill(d + 1, d + n + 1, inf);
  d[x] = 0;
  visited[x] = true;
  queue<int> q;
  q.push(x);
  while ((int)q.size() > 0) {
    int u = q.front();
    q.pop();
    for (int v : g[u]) {
      if (!visited[v] && d[v] > d[u] + 1) {
        visited[v] = true;
        d[v] = 1 + d[u];
        q.push(v);
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    if (d[i] == inf) {
      d[i] = -1;
    }
    out << d[i] << " ";
  }
  return 0;
}