Cod sursa(job #3320353)

Utilizator marelucaMare Luca Ghita mareluca Data 5 noiembrie 2025 11:48:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

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

int n, m, s;
std::vector<std::vector<int>> arce;
std::vector<int> min_arce;

void BFS(int start) {
    std::queue<int> q;
    std::vector<bool> v(n + 1);

    q.push(start);
    v[start] = 1;
    min_arce[start] = 0;

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

        for(int i : arce[k]) {
            if(v[i] == 0) {
                v[i] = 1;
                q.push(i);
                min_arce[i] = min_arce[k] + 1;
            }
        }

        q.pop();
    }

    for(int i = 1; i <= n; ++i)
        fout << min_arce[i] << ' ';
}

int main() {
    fin >> n >> m >> s;
    arce.resize(n + 1);
    min_arce.resize(n + 1, -1);

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

    BFS(s);
    return 0;
}