Cod sursa(job #3296184)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 12 mai 2025 09:32:35
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int MAXN = 100000;

vector<int> g[MAXN + 1];
int dist[MAXN + 1];
queue<int> q;

void bfs(int node) {
  dist[node] = 0;
  q.push(node);
  while(!q.empty()) {
    node = q.front();
    q.pop();
    for(int vecin : g[node]) {
      if(dist[vecin] < 0) {
        dist[vecin] = dist[node] + 1;
        q.push(vecin);
      }
    }
  }
}

int main() {
  int n, m, src;
  fin >> n >> m >> src;
  for(int i = 1; i <= m; i++) {
    int u, v;
    fin >> u >> v;
    g[u].push_back(v);
  }

  for(int i = 1; i <= n; i++) {
    dist[i] = -1;
  }

  bfs(src);

  for(int i = 1; i <= n; i++) {
    fout << dist[i] << " ";
  }
  fout << "\n";
  return 0;
}