Cod sursa(job #3368330)

Utilizator robertbaciuBaciu Vlad-Robert robertbaciu Data 14 octombrie 2026 11:23:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <queue>
#include <vector>

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

std::vector<std::vector<int>> graph;
std::vector<int> dist;

void bfs(int start) {
    std::queue<int> q;
    q.push(start);
    dist[start] = 1;

    while (!q.empty()) {
        int curr = q.front();
        q.pop();

        for (int next : graph[curr]) {
            if (dist[next] == 0) {
                dist[next] = dist[curr] + 1;
                q.push(next);
            }
        }
    }
}

int main() {
    int n, m, s;
    in >> n >> m >> s;

    graph.assign(n + 1, std::vector<int>());
    dist.assign(n + 1, 0);

    for (int i = 0; i < m; i++) {
        int x, y;
        in >> x >> y;
        graph[x].push_back(y);
    }

    bfs(s);

    for (int node = 1; node < n; node++) {
        out << dist[node] - 1 << ' ';
    }
    out << dist[n] - 1;
}