Cod sursa(job #3314610)

Utilizator dumy123Darius Dumitrascu dumy123 Data 10 octombrie 2025 15:02:47
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
void bfs(int i,std::vector<bool>viz,std::vector<std::vector<int>> lista,std::vector<int> &dis,int &nr){
    if(viz[i]==true){
        return;
    }
    viz[i]=true;
    int ok=0;
    for(int j=0;j<lista[i].size();j++){
        if(viz[lista[i][j]]==false)
            {dis[lista[i][j]]=nr;
                ok=1;}
    }
    if(ok==1){
        nr++;
    }
    for(int j=0;j<lista[i].size();j++){
        bfs(lista[i][j],viz,lista,dis,nr);
    }
}
int main(){
    int n,m,s,x,y,nr=1;
    fin>>n>>m>>s;
    std::vector<std::vector<int>> lista(n+1);
    std::vector<bool>viz(n+1);
    std::vector<int> dis(n+1);
    // for(int i=1;i<=n;i++){
    //     viz[i]=false;
    // }
    while(m){
        fin>>x>>y;
        if(x!=y){
            lista[x].push_back(y);
        }
        m--;
    }
    bfs(s,viz,lista,dis,nr);
    for(int i=1;i<=n;i++){
        if(i!=s && dis[i]==0)
            dis[i]=-1;
        std::cout<<dis[i]<<" ";
    }
    // for(int i=1;i<=n;i++){
    //     std::cout<<i<<" ";
    //     for(int j=0;j<lista[i].size();j++)
    //     {
    //         std::cout<<lista[i][j]<<" ";
    //     }
    //     std::cout<<"\n";
    // }
}