Cod sursa(job #2398414)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 5 aprilie 2019 14:17:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>
#define DIM 100002

using namespace std;

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

vector<int> graf[DIM];

int n, m, s, x, y;
int dist[DIM], q[4 * DIM];

bool viz[DIM];

int main(int argc, const char * argv[]) {
    
    in>>n>>m>>s;
    
    for(int i = 1; i <= m; ++ i){
        in>>x>>y;
        graf[x].push_back(y);
    }
    
    int st = 1, dr = 1;
    
    q[1] = s;
    viz[s] = true;
    
    while(st <= dr){
        int node = q[st];
        ++ st;
        for(int i = 0; i < graf[node].size(); ++ i){
            int vecin = graf[node][i];
            if(viz[vecin] == 0){
                viz[vecin] = true;
                dist[vecin] = dist[node] + 1;
                ++ dr;
                q[dr] = vecin;
            }
        }
    }
    
    for(int i = 1; i <= n; ++ i){
        if(dist[i] != 0 || i == s)
            out<<dist[i]<<" ";
        else
            out<<"-1 ";
    }
    
    return 0;
}