Cod sursa(job #2384859)

Utilizator alex_galatanAlex Galatan alex_galatan Data 21 martie 2019 11:28:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

std::ifstream f("bfs.in");
std::ofstream g("bfs.out");

struct nod{
    int lg = -1;
    std::vector <int> vecini;
};

void BFS(std::vector <nod> &noduri, int sursa)
{
    std::queue<nod> coada;

    noduri[sursa - 1].lg = 0;
    coada.push(noduri[sursa-1]);

    int i;
    nod n;
    while (!coada.empty())
        {
            n = coada.front();
            coada.pop();

            for (i = 0; i < n.vecini.size(); i++)
                if (noduri[n.vecini[i]-1].lg == -1)
                {
                    noduri[n.vecini[i]-1].lg = n.lg + 1;
                    coada.push(noduri[n.vecini[i]-1]);
                }
        }
}

int main()
{
    int N, M, S, i, m1, m2;

    f>>N>>M>>S;

    std::vector <nod> noduri(N);
    for (i = 0; i < M; i++)
    {
        f>>m1>>m2;
        noduri[m1-1].vecini.push_back(m2);
    }

    BFS(noduri, S);

    for (i = 0; i < N; i++)
    {
        g<<noduri[i].lg<<" ";
    }

    f.close();
    return 0;
}