Cod sursa(job #3318556)

Utilizator LiviuMmMarinica Liviu LiviuMm Data 28 octombrie 2025 13:10:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
using namespace std;

int N, M, S;
int a[100001][100];   
int grad[100001];     
int dist[100001];     
int q[100001];        

int main() {
    ifstream f("bfs.in");
    ofstream g("bfs.out");

    f >> N >> M >> S;

    for (int i = 1; i <= M; i++) {
        int x, y;
        f >> x >> y;
        a[x][grad[x]++] = y; 
    }
    for (int i = 1; i <= N; i++) dist[i] = -1;

    // BFS clasic
    int st = 0, dr = 0;
    q[dr++] = S;
    dist[S] = 0;

    while (st < dr) {
        int nod = q[st++];
        for (int i = 0; i < grad[nod]; i++) {
            int vecin = a[nod][i];
            if (dist[vecin] == -1) {
                dist[vecin] = dist[nod] + 1;
                q[dr++] = vecin;
            }
        }
    }
    for (int i = 1; i <= N; i++)
        g << dist[i] << " ";

    f.close();
    g.close();
    return 0;
}