Cod sursa(job #2782970)

Utilizator iancupoppPopp Iancu Alexandru iancupopp Data 13 octombrie 2021 16:29:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

const int N = 1e5 + 5;

vector<int> gr[N];
int d[N], n;

void bfs(int start) {
  for (int i = 1; i <= n; ++i)
    d[i] = -1;
  d[start] = 0;
  queue<int> q;
  q.push(start);
  while (!q.empty()) {
    auto curr = q.front();
    q.pop();
    for (auto vec : gr[curr])
      if (d[vec] == -1) {
        d[vec] = d[curr] + 1;
        q.push(vec);
      }
  }
}

int main() {
  ifstream cin("bfs.in");
  ofstream cout("bfs.out");
  int m, st;
  cin >> n >> m >> st;
  while (m--) {
    int x, y;
    cin >> x >> y;
    gr[x].push_back(y);
  }
  bfs(st);
  for (int i = 1; i <= n; ++i)
    cout << d[i] << " ";
  cin.close();
  cout.close();
  return 0;
}