Cod sursa(job #2819729)

Utilizator rimihaiMihai Radu-Ioan rimihai Data 18 decembrie 2021 21:28:43
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.21 kb
#include <bits/stdc++.h>
using namespace std;

#define NMaxNoduri 100001
#define NMaxNoduri2 50005
#define NMaxNoduri3 10005
#define INFINIT 0x3f3f3f3f
#define flowmax 1005



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

class Clasa_Graf
{
    int n, m;
    vector<vector<int>> lista_adiacenta;

public:
    Clasa_Graf();
    ~Clasa_Graf();
    void bfs(int x,unordered_map<int,bool>& vector_vizitat,list<int>& coada_bfs);
    void infoarena_bfs();
};

Clasa_Graf::Clasa_Graf()
{
    n=0;
    m=0;
}

Clasa_Graf::~Clasa_Graf()
{
}

void Clasa_Graf::bfs(int x, unordered_map<int,bool>& vector_vizitat, list<int>& coada_bfs)
{
    int distanta_minima[NMaxNoduri];
    memset(distanta_minima,-1, sizeof(distanta_minima));
    vector_vizitat[x]=true;
    coada_bfs.push_back(x);
    distanta_minima[x]=0;
    while(!coada_bfs.empty())
    {
        x = coada_bfs.front();
        coada_bfs.pop_front();
        for (int i=0; i<lista_adiacenta[x].size(); ++i)
        {
            if (distanta_minima[lista_adiacenta[x][i]]<0)
            {
                vector_vizitat[lista_adiacenta[x][i]] = true;
                coada_bfs.push_back(lista_adiacenta[x][i]);
                distanta_minima[lista_adiacenta[x][i]]=distanta_minima[x]+1;
            }
        }
    }
    for(int i=1; i<=n; i++)
        fout<<distanta_minima[i]<<" ";
}

void Clasa_Graf::infoarena_bfs()
{
    int st;
    unordered_map<int,bool> vector_vizitat;
    list<int> coada_bfs;
    fin>>n>>m>>st;
    for(int i=1; i<=m; i++)
    {
        int a,b;
        fin>>a>>b;
        lista_adiacenta[a].push_back(b);
    }
    bfs(st,vector_vizitat,coada_bfs);
    lista_adiacenta.clear();
}

int main()
{
    Clasa_Graf g;
    //g.infoarena_dfs();
    g.infoarena_bfs();
    //g.infoarena_sortaret();
    //g.infoarena_ctc();
    //g.infoarena_biconex();
    //g.leetcode_muchiecritica();
    //g.havelhakimi();
    //g.infoarena_dijkstra();
    //g.infoarena_bellman_ford();
    //g.infoarena_pmd();
    //g.infoarena_apm();
    //g.infoarena_roy_floyd();
    //g.infoarena_darb();
    //g.infoarena_maxflow();
    //g.infoarena_ciclueuler();
    //g.infoarena_cuplaj();
    return 0;
}