Cod sursa(job #2172362)

Utilizator RoliBoyNagy Roland RoliBoy Data 15 martie 2018 16:11:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

int main() {
    std::ifstream in("bfs.in");
    std::ofstream out("bfs.out");

    int noduri, arce, start;
    in >> noduri >> arce >> start;

    std::vector<int> lAdiacenta[noduri+1];
    std::queue<int> Q;
    bool vizitat[noduri+1] = {0};
    int dist[noduri+1] = {0};

    for (int i = 0; i < arce; i++) {
        int nod0, nod1;
        in >> nod0 >> nod1;
        lAdiacenta[nod0].push_back(nod1);
    }

    Q.push(start);
    vizitat[start] = true;
    while (!Q.empty()) {
        int nod = Q.front();
        Q.pop();
        for (const int& l : lAdiacenta[nod]) {
            if (!vizitat[l]) {
                dist[l] = dist[nod] + 1;
                Q.push(l);
                vizitat[l] = true;
            }
        }
    }

    for (int i = 1; i <= noduri; i++) {
        if (dist[i] == 0) dist[i] = -1;
    }
    dist[start] = 0;

    for (int i = 1; i <= noduri; i++) {
        out << dist[i] << " ";
    }
}