Cod sursa(job #3247650)

Utilizator repzcuOprescu Andrei repzcu Data 8 octombrie 2024 17:40:32
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.4 kb
#include <bits/stdc++.h>

void BFS(int S, std::vector<std::vector<int>> v, std::queue<int> q, std::vector<bool> viz, std::vector<int> d)
{
    int nod, x;
    viz[S] = true;
    d[S] = 0;
    q.push(S);

    while (!q.empty())
    {
        nod = q.front();
        q.pop();

        for (int i = 0; i < v[nod].size(); i++)
        {
            x = v[nod][i];

            if (!viz[x])
            {
                d[x] = d[nod] + 1;
                q.push(x);
                viz[x] = true;
            }
        }

    }

    for (int i = 1; i < d.size(); i++)
        std::cout << d[i] << " ";

}

int main(){

    std::ifstream fin("bfs.in");
    std::ofstream fout("bfs.out");

    std::vector<std::vector<int>> v;

    int n, m, S, x, y;

    fin >> n >> m >> S;

    v.resize(n+1);

    for (int i = 0; i < m; i++)
    {
        fin >> x >> y;
        v[x].push_back(y);
    }

    /*
    for (int i = 1; i < n+1; i++)
    {
        std::cout << i << " : ";
        for (int j = 0; j < v[i].size(); j++)
            std::cout << v[i][j] << " , ";
        std::cout << "\n"; 
    }
    */

    std::queue<int> q;
    std::vector<bool> viz;
    std::vector<int> d;
    viz.resize(n+1);
    d.resize(n+1);

    for (int i = 1; i < n+1; i++)
        viz[i] = false;

    for (int i = 1; i < n+1; i++)
        d[i] = -1;

    BFS(S, v, q, viz, d);

}