Cod sursa(job #2737428)

Utilizator Gabriel_DascalescuGabriel Dascalescu Gabriel_Dascalescu Data 4 aprilie 2021 19:02:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
#include<vector>
#define nmax 100005

using namespace std;

ifstream in("bfs.in");
ofstream out("bfs.out");

struct BFS
{
    int nod, val;
};

int a[nmax];

bool viz[nmax];

int  n, m, nod;
vector <BFS> coada;
vector<int> vecini[nmax];

int main()
{
    in>>n>>m>>nod;
    for(int i=1; i<=n; i++)
        a[i] = -1;
    BFS aux;
    aux.nod = nod;
    aux.val = 0;

    coada.push_back(aux);

    for(int i = 0; i<m; i++)
    {
        int a, b;
        in>>a>>b;
        vecini[a].push_back(b);
    }

    for(int h = 0; h<coada.size(); h++)
    {
        int anod = coada[h].nod, ceva = coada[h].val;
        if(viz[anod]==0)
        {
            viz[anod]=1;
            a[anod] = coada[h].val;

            for(int i=0; i<(int)vecini[anod].size(); i++)
            {
                if(viz[vecini[anod][i]]==0)
                {
                    BFS lee;
                    lee.nod = vecini[anod][i];
                    lee.val = coada[h].val+1;
                    coada.push_back(lee);
                }
            }
        }
    }

    for(int i=1; i<=n; i++)
    {
        out<<a[i]<<" ";
    }

    return 0;
}