Cod sursa(job #2662414)

Utilizator Zamfirescuste2Zamfirescu Stefan Zamfirescuste2 Data 24 octombrie 2020 01:32:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

const int NMAX = 1e5 + 1;

std :: vector <int> graf[NMAX];
std :: vector <bool> viz(NMAX);
std :: vector <int> dist(NMAX);

int main (){

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

    int n, m, source;

    f >> n >> m >> source;
    for (int i = 0; i < m; i++){
        int x, y;
        f >> x >> y;
        graf[x].push_back(y);
    }

    std :: queue <int> qu;
    qu.push(source);
    viz[source] = 1;
    dist[source] = 0;

    while(!qu.empty()){

        int ns = qu.front();

        for (int vecin : graf[ns]){
            if (!viz[vecin]){
                qu.push(vecin);
                viz[vecin] = 1;
                dist[vecin] = dist[ns] + 1;
            }
        }
        qu.pop();

    }

    for (int i = 1; i <= n; i++)
        if (viz[i] != 1)
            g << -1 << " ";
        else
            g << dist[i] << " ";

    g << '\n';


}