Cod sursa(job #3138883)

Utilizator SSKMFSS KMF SSKMF Data 23 iunie 2023 11:15:47
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

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

vector < vector <int> > adiacenta;
vector <int> distante;

void Parcurgere (const int inceput)
{
    queue <int> noduri;
    noduri.push(inceput);
    distante[inceput] = 0;
    while (!noduri.empty())
    {
        const int nod_actual = noduri.front();

        for (auto nod_vecin : adiacenta[nod_actual])
            if (distante[nod_vecin] == -1) {
                distante[nod_vecin] = distante[nod_actual] + 1;
                noduri.push(nod_vecin);
            }

        noduri.pop();
    }
}

int main ()
{
    int noduri , muchii , sursa;
    cin >> noduri >> muchii >> sursa;

    adiacenta.resize(noduri + 1);
    distante.insert(distante.begin() , noduri + 1 , -1);
    for (int indice = 1 , nod[2] ; indice <= muchii ; indice++)
        cin >> nod[0] >> nod[1] , adiacenta[nod[0]].push_back(nod[1]);

    Parcurgere(sursa);

    for (int indice = 1 ; indice <= noduri ; indice++)
        cout << distante[indice] << ' ';

    cout.close(); cin.close();
    return 0;
}