Cod sursa(job #3285566)

Utilizator RobertCNMBrobertM RobertCNMB Data 13 martie 2025 10:28:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>

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

const int NMAX = 1e5;

int n, m, start;
int sol[NMAX + 1];
vector<int> vecini[NMAX + 1];
queue<int> q;
bitset<NMAX + 1> vizitat;

void citire(){
    cin >> n >> m >> start;
    for (int i = 1; i <= m; ++i){
        int x, y;
        cin >> x >> y;
        vecini[x].push_back(y);
    }
}

void bfs(){
    q.push(start);
    //sol[start] = 0;
    vizitat[start] = true;

    while (! q.empty()){
        int x = q.front();
        q.pop();
        for (auto a : vecini[x]){
            if (! vizitat[a]){
                vizitat[a] = true;
                q.push(a);
                sol[a] = sol[x] + 1;
            }
                
        }
    }
}

void afisare(){
    for (int i = 1; i <= n; ++i){
        if (vizitat[i] == false)
            cout << -1 << ' ';
        else cout << sol[i] << ' ';
    }
}

int main(){
    citire();
    bfs();
    afisare();
    return 0;
}