Cod sursa(job #2797794)

Utilizator jaha01Jahaleanu Vlad-Gabriel jaha01 Data 10 noiembrie 2021 16:43:55
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

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

class Graf
{
    int nrNoduri;
    int nrMuchii;
    int start;
    vector <int> adj[100];

public:

    void citire();
    void BFS();

};

void Graf::citire()
{
    int first, second;

    f>>nrNoduri;
    f>>nrMuchii;
    f>>start;

    for(int i = 0; i < nrMuchii; i++)
    {
        f>>first>>second;
        adj[first].push_back(second);
    }
}

void Graf::BFS()
{
    queue <int> coada;
    coada.push(start);
    bool visited[100] = {};
    visited[start] = 1;
    int cost[100] = {};
    cost[start] = 0;

    int nod_crt;

    while (coada.size())
    {
        nod_crt = coada.front();

        for(int i = 0; i < adj[nod_crt].size(); i++)
        {
            if(!visited[adj[nod_crt][i]])
            {
                coada.push(adj[nod_crt][i]);
                cost[adj[nod_crt][i]] = cost[nod_crt] + 1;
                visited[adj[nod_crt][i]] = 1;
            }
        }
        coada.pop();
    }

    for(int i = 1; i <= nrNoduri; i++)
    {
        if(visited[i] == 1)
            cout<<cost[i]<<" ";
        else
            cout<<"-1 ";
    }


}


int main()
{
    Graf G;

    G.citire();
    G.BFS();
    return 0;
}