Cod sursa(job #2758677)

Utilizator MoarcascosminMoarcas Cosmin Moarcascosmin Data 11 iunie 2021 23:58:33
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>
#include <queue>

using namespace std;

int n, m, nod, vizitat[100001], distanta[100001];
vector <int> vecini[100001];
queue <int> coada;

void Citire()
{
    ifstream f("bfs.in");

    f >> n >> m >> nod;

    int nod1, nod2;

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

void BFS()
{
    coada.push(nod);
    vizitat[nod] = true;

    while(coada.empty() == NULL)
    {
        int varf = coada.front();
        coada.pop();

        for(int i = 0; i < vecini[varf].size(); i++)
            if(!vizitat[vecini[varf][i]])
            {
                vizitat[vecini[varf][i]] = true;
                coada.push(vecini[varf][i]);
                distanta[vecini[varf][i]] = distanta[varf] + 1;
            }
    }
}

void Afisare()
{
    ofstream g("bfs.out");
    for(int i = 1; i <= n; i++)
    {
        if(distanta[i] == 0 && i != nod)
            g << -1 << ' ';
        else
            g << distanta[i] << ' ';
    }
}

int main()
{
    Citire();
    BFS();
    Afisare();

    return 0;
}