Cod sursa(job #2944481)

Utilizator VictorB11Badulescu Victor VictorB11 Data 22 noiembrie 2022 16:49:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");

vector<int> BFS(vector<vector<int>> lista, int s){
    queue<pair<int, int>> coada;
    vector<int> vizitate;
    vector<int> distante;
    distante.resize(lista.size());
    vizitate.resize(lista.size());
    vizitate[s] = 1;
    coada.push({s, 0});
    while(!coada.empty()){
        int nodCurent = coada.front().first;
        int distCurent = coada.front().second;
        distante[nodCurent] = distCurent;
        for(int &nod : lista[nodCurent])
            if(!vizitate[nod]) {
                coada.push({nod, distCurent + 1});
                vizitate[nod] = 1;
            }
        coada.pop();
    }
    for (int i = 1; i < distante.size(); i++)
        if(distante[i] == 0 && i != s)
            distante[i] = -1;
    return distante;
}


int main() {
    int n, m, s;
    fin>>n>>m>>s;
    vector<vector<int>> lista;
    lista.resize(n + 1);
    int x, y;
    for(int i = 0; i < m; i++){
        fin>>x>>y;
        lista[x].push_back(y);
    }
    vector<int> distante = BFS(lista, s);
    for (auto &lista2 : lista);
    for(int i = 1; i <= n; i++)
        fout<<distante[i]<<' ';
    return 0;
}