Cod sursa(job #2797882)

Utilizator MoraruLiviuMoraru Mihai-Liviu MoraruLiviu Data 10 noiembrie 2021 18:26:26
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb

#include<bits/stdc++.h>
using namespace std;
 
ifstream f("bfs.in");
ofstream g("bfs.out");

vector <int> adiacenta[100010];
int cost[100010];
bool deja_Vizitat[100010];

void BFS(int nrvarfuri, int start, vector<int>* adiacenta)
{
    queue <int> coada;
    coada.push (start);
    cost[start]=0;
    deja_Vizitat[start]=1;
    
    int varf_curent;

    while (coada.size()!=0)
    {
        varf_curent=coada.front();

        for(int i=0; i<adiacenta[varf_curent].size(); i++)
        {
            if(deja_Vizitat[adiacenta[varf_curent][i]]==0)
            {
                coada.push(adiacenta[varf_curent][i]);
                cost[adiacenta[varf_curent][i]] = cost[varf_curent]+1;
                deja_Vizitat[adiacenta[varf_curent][i]] = 1;
            }
        }
        coada.pop();
    }

}

int main()
{
    int nrvarfuri, nrmuchii, start;

    f>>nrvarfuri;
    f>>nrmuchii;
    f>>start;

    int nod1, nod2;

    for(int i=0; i<nrmuchii; i++)
    {
        f>>nod1;
        f>>nod2;
        adiacenta[nod1].push_back(nod2);
    }

    BFS(nrvarfuri, start, adiacenta);

    for(int i=1; i<=nrmuchii; i++)
    {
        if(deja_Vizitat[i] == 1)
            g<<cost[i]<<" ";
        else
            g<<"-1 ";
    }

    return 0;
}