Cod sursa(job #3369450)

Utilizator ilystefalexVaduva Stefan-Alexandru ilystefalex Data 20 octombrie 2026 13:27:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
void bfs(vector<int> sursa, vector<bool> vizitat, vector<vector<int>> vecini,int* nivel ) {
    int dist=0;
        while (!sursa.empty()) {
            vector<int> next;
            for (int nod : sursa) {
            nivel[nod-1]=dist;


            for (int vecin : vecini[nod]) {
                if (vizitat[vecin]==false) {
                    next.push_back(vecin);
                    vizitat[vecin]=true;

                }

            }

        }
            sursa=next;
            dist++;
        }



}

int main() {
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    int n,m,s;
    fin>>n>>m>>s;
    vector<vector<int>> vecini(n + 1);
    vector<bool> vizitat(n + 1, false);
    int nivel[n]={-1};
    for (int i=0;i<n;i++) {
        if (i!=s-1)
        nivel[i]=-1;
        else nivel[i]=0;
    }
    vizitat[s]=true;
    for (int i=0;i<m;i++) {
        int x,y;
        fin>>x>>y;
        vecini[x].push_back(y);

    }
    bfs({s},vizitat,vecini,nivel);
    for (int i=0;i<n;i++) {
        fout<<nivel[i]<<" ";
    }


}