Cod sursa(job #2981040)

Utilizator CalinachoGherlan Calin Paul Calinacho Data 17 februarie 2023 08:45:07
Problema BFS - Parcurgere in latime Scor 20
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 node{
    bool vizitat=0;
    int dist=10000000, n=0;
    vector<int>vec;
};

void bfs(vector<node> &G, int curr){
    G[curr].vizitat=1;
    for(int i=0;i<G[curr].n;i++){
        
        //out<<G[curr].vec[i]<<" "<<G[G[curr].vec[i]].dist<<" -> ";
        
        G[G[curr].vec[i]].dist=min(G[curr].dist+1,G[G[curr].vec[i]].dist);
        
        //out<<G[G[curr].vec[i]].dist<<"\n";
        
        if(!G[G[curr].vec[i]].vizitat){
            bfs(G, G[curr].vec[i]);
        }
    }
}

int main(){
    
    int n, m, s;
    int a,b;
    in>>n>>m>>s;
    vector<node>G(n);
    
    for(int i=0;i<m;i++){
        in>>a>>b;
        G[a-1].vec.push_back(b-1);
        G[a-1].n++;
    }
    G[s-1].dist=0;
    bfs(G, s-1);
    
    for(int i=0;i<n;i++){
        if(G[i].vizitat){
            out<<G[i].dist<<" ";
        }
        else out<<-1<<" ";
    }
    
    
}