Cod sursa(job #3216291)

Utilizator TrifoitaBejenescu-Babusanu Stefan Trifoita Data 15 martie 2024 20:19:33
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

long long queue[100001], viz[100001], dist[100001], i = 0, k = 0, mat[100001][100001], n, m, s;

void citire() {
  fin >> n >> m >> s;
  for (int cont = 1; cont <= m; cont++) {
    int x,y;
    fin >> x >> y;
    mat[x][y] = 1;
  }
}

void reset() {
  for (int cont = 1; cont <= n; cont++)
    viz[cont] = 0;
}

void bfs(int node) {
  viz[node] = 1;
  for (int cont = 1; cont <= n; cont++)
    if (mat[node][cont] && !viz[cont]) {
      dist[cont] = dist[node]+1;
      queue[++k] = cont;
    }
  if (i < k)
    bfs(queue[++i]);
}

int main() {
  citire();
  bfs(s);
  for (int i = 1; i <= n; i++)
    if (i != s && !dist[i])
      dist[i] = -1;
  for (int i = 1; i <= n; i++)
    fout << dist[i] << " ";
  return 0;
}