Cod sursa(job #3367125)

Utilizator aspaNadu Tudor aspa Data 6 octombrie 2026 11:04:13
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <deque>
using namespace std;

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

int main(){
    int N, M, S;
    fin >> N >> M >> S;
    int m[N+1][N+1];
    
    int n1, n2;

    for (int i = 0; i < M; i++) {
        fin >> n1 >> n2;
        m[n1][n2] = 1;
    }

    int bfs[N+1];
    for (int i = 1; i <= N; i++)
        bfs[i] = -1;

    deque<pair<int, int>> q;
    q.push_back({S, 0});

    int visited[N+1] = {0};
    visited[S] = 1;
    bfs[S] = 0;
    int nodCurent;
    int nrArce;

    while (!q.empty()) {
        nodCurent = q.front().first;
        nrArce = q.front().second;
        q.pop_front();
        for (int i = 1; i <= N; i++){
            if (!visited[i] && m[nodCurent][i] == 1){
                q.push_back({i, nrArce + 1});
                bfs[i] = nrArce + 1;
            }
        }
    }

    for (int i = 1; i <= N; i++) {
        fout << bfs[i] << " ";
    }

    return 0;
}