Cod sursa(job #3150230)

Utilizator CalinachoGherlan Calin Paul Calinacho Data 15 septembrie 2023 13:10:18
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include<bits/stdc++.h>
using namespace std;

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

struct graf{
    vector<int>vec;
    int nr=0, dist=-1;
};

void bfs(vector<graf>&G, int poz, int cnt){
    if(G[poz].dist<=cnt && G[poz].dist!=-1){
        return;
    }
    G[poz].dist=cnt;
    
    //cout<<"Am vizitat nodul "<<poz<<" si i-am dat dist "<<cnt<<"\n";
    
    cnt++;
    for(int i=0; i<G[poz].nr;i++){
        bfs(G, G[poz].vec[i],cnt);
    }
}

int main(){
    long long n, m, s, aux1, aux2;
    in>>n>>m>>s;
    vector<graf>G(n);
    // cout<<"test";
    
    for(int i=0;i<m;i++){
        in>>aux1>>aux2;
        G[aux1-1].vec.push_back(aux2-1);
        G[aux1-1].nr++;
    }
    
    bfs( G, s-1, 0);
    
    for(int i=0;i<n;i++){
        out<<G[i].dist<<" ";
    }
    
    
    
    
    
    
    
    
    
    
    /*for(int i=0;i<n;i++){
        for(int j=0;j<G[i].nr;j++){
            out<<G[i].vec[j]<<" ";
        }
        out<<"\n";
    }
    */
}