Cod sursa(job #2793755)

Utilizator YusyBossFares Yusuf YusyBoss Data 3 noiembrie 2021 23:06:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <queue>
#include <vector>
#define NMAX 100000

using namespace std;

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

int vdist[NMAX + 1];
vector <int> vnext[NMAX + 1];
queue <int> vbfs;

void bfs(int nodeinit) {
  int i, n, node, dist, nodenext;

  vbfs.push(nodeinit);
  vdist[nodeinit] = 1;

  while (!vbfs.empty()) {
    node = vbfs.front();
    dist = vdist[node];
    vbfs.pop();

    n = vnext[node].size();
    for (i = 0; i < n; i++) {
      nodenext = vnext[node][i];
      if (vdist[nodenext] == 0) {
        vdist[nodenext] = dist + 1;
        vbfs.push(nodenext);
      }
    }
  }
}

int main() {
  int n, m, node, i, a, b;
  cin >> n >> m >> node;

  for (i = 0; i < m; i++) {
    cin >> a >> b;
    vnext[a].push_back(b);
  }

  bfs(node);

  for (i = 1; i <= n; i++)
    cout << vdist[i] - 1 << " ";
  return 0;
}