Cod sursa(job #3318707)

Utilizator bianca_maneaManea Bianca bianca_manea Data 28 octombrie 2025 14:41:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
// Source: https://usaco.guide/general/io

#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

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

vector<int> L[100001];
vector<int> viz(100001, 0);
vector<int> cost(100001, -1);
queue<int> qu;


void BFS(int curr_node){
    while(!qu.empty()){
        for(int i : L[curr_node]){
            if(viz[i] == 0){
                qu.push(i);
                viz[i]=1;
                cost[i] = cost[curr_node]+1;
            }
        }
        qu.pop();
        curr_node = qu.front();
        BFS(curr_node);
    }
}

int main(){
    int nr_muchii, nr_noduri, nod_x, nod_y, given_node;
    fin >> nr_noduri;
    fin >> nr_muchii;
    fin >> given_node;

    for (int i = 1; i<=nr_muchii; i++) {
        fin >> nod_x >> nod_y;

        L[nod_x].push_back(nod_y);
    }

    cost[given_node] = 0;
    viz[given_node] = 1;
    qu.push(given_node);
    BFS(given_node);

    for(int i =1; i<=nr_noduri;i++){
        fout << cost[i] << " ";
    }

}