Cod sursa(job #2924823)

Utilizator popashtefan10Popa Stefan popashtefan10 Data 11 octombrie 2022 17:04:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

const int NMAX = 1e5;

int n;
int m;
int start;
vector< vector<int> > graph;
vector<int> dmin;

void read() {
  cin >> n >> m >> start;
  graph.resize(n + 1);
  for (int i = 1; i <= m; i++) {
    int a, b;
    cin >> a >> b;
    graph[a].push_back(b);
  }
}

void bfs() {
  queue<int> q;

  dmin.resize(n + 1, -1);
  q.push(start);
  dmin[start] = 0;

  while (!q.empty()) {
    int node = q.front();
    q.pop();
    for (int ngh: graph[node])
      if (dmin[ngh] == -1) {
        dmin[ngh] = dmin[node] + 1;
        q.push(ngh);
      }
  }
}

void print() {
  for (int i = 1; i <= n; i++)
    cout << dmin[i] << " ";
}

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

  read();
  bfs();
  print();

  return 0;
}