Cod sursa(job #2789843)

Utilizator XeinIonel-Alexandru Culea Xein Data 28 octombrie 2021 01:09:44
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>

#define NMAX 100009

std::vector<int> Adiacenta[NMAX];

int main()
{
    std::ifstream f("bfs.in");
    std::ofstream g("bfs.out");
    int N, M, S;
   
    f >> N >> M >> S;
    for (int x, y, i = 0; i < M; ++i)
    {
        f >> x >> y;
        Adiacenta[x].push_back(y);
    }

    int nrArce[NMAX];
    int coada[NMAX], st = 1, dr = 1;

    for (int i = 1; i <= N; ++i)
        nrArce[i] = -1;
    nrArce[S] = 0;
    coada[st] = S;
    while (st <= dr)
    {
        int curent = coada[st++];
        for (auto it = Adiacenta[curent].begin(); it != Adiacenta[curent].end(); ++it)
            if(nrArce[*it] == -1)
            {
                coada[++dr] = *it;
                nrArce[*it] = nrArce[curent] + 1;
            }
    }

    for(int i = 1; i <= N; ++i)
        g << nrArce[i] << ' ';

    return 0;
}