Cod sursa(job #3326816)

Utilizator ecaterinaEcaterina Stefanescu ecaterina Data 30 noiembrie 2025 17:30:40
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

#define NMAX 100002

vector<int> graf[NMAX];
queue<int> q;

int dist[NMAX];

void bfs(int nod) {
  int now, i, vecin;
  
  q.push(nod);
  dist[nod] = 1;
  
  while (!q.empty()) {
    now = q.front();
    
    for (i=0; i<graf[now].size(); i++) {
      vecin = graf[now][i];
      
      if (dist[vecin]==0) {
        q.push(vecin);
        dist[vecin] = dist[now]+1;
      }
    }
    
    q.pop();
  }
}

int main() {
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    
    int n, m, a, b, k, i;
    
    fin >> n >> m >> k;
    
    for (i=0; i<m; i++) {
      fin >> a >> b;
      graf[a].push_back(b);
    }
    
    bfs(k);
    
    for (i=1; i<=n; i++) {
      fout << dist[i]-1 << ' ';
    }
    
    fin.close();
    fout.close();
    return 0;
}