Cod sursa(job #3229412)

Utilizator Stefan_NicaStefan Nica Stefan_Nica Data 15 mai 2024 22:11:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>

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

void bfs(int nod, std::vector<int> v[]);
int n, m, x, y, s, sol[100001]; bool viz[100001];
int main(){
    f>>n>>m>>s; std::vector<int> v[n+1];
    for(; m; --m)
        f>>x>>y, v[x].push_back(y);
    bfs(s, v); 
    for(int i=1; i<=n; ++i)
        if(viz[i])
            g<<sol[i]<<' ';
        else g<<-1<<' ';
    return 0;
}
void bfs(int nod, std::vector<int> v[]){
    std::queue<int> q; viz[nod]=1;
    q.push(nod); 
    for(; !q.empty(); q.pop()){
        for(auto i : v[q.front()])
            if(!viz[i])
                q.push(i), viz[i]=1, sol[i]=sol[q.front()]+1;
        /*for(int i=1; i<=n; ++i)
            std::cout<<sol[i]<<' ';
        std::cout<<'\n';*/
    }
}