Cod sursa(job #3123821)

Utilizator mihaisoare349Soare Mihai-Alexandru mihaisoare349 Data 25 aprilie 2023 16:54:04
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <iterator>

std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");

int main() {
    int n, m, s;
    fin >> n >> m >> s;
    s--;
    std::vector<std::vector<int>> adj(n);
    while(m--) {
        int a, b;
        fin >> a >> b;
        a--, b--;
        adj[a].push_back(b);
    }

    std::vector<int> distances(n, -1);
    std::queue<int> q;
    q.push(s);
    distances[s] = 0;
    while (!q.empty()) {
        int node = q.front();
        q.pop();
        for(auto next : adj[node]) {
            if(distances[next] != -1)
                continue;
            distances[next] = distances[node]+1;
            q.push(next);
        }
    }

    std::copy(distances.begin(), distances.end(),
              std::ostream_iterator<int>(fout, " "));
    return 0;
}