Cod sursa(job #3138879)

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

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

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

void Parcurgere (const int nod_actual)
{
    for (auto nod_vecin : adiacenta[nod_actual])
        if (distante[nod_vecin] == -1)
            distante[nod_vecin] = distante[nod_actual] + 1;

    for (auto nod_vecin : adiacenta[nod_actual])
        if (distante[nod_vecin] == distante[nod_actual] + 1)
            Parcurgere(nod_vecin);
}

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

    adiacenta.resize(noduri + 1);
    distante.insert(distante.begin() , noduri + 1 , -1);
    distante[sursa] = 0;

    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;
}