Cod sursa(job #3352283)

Utilizator gugalcromMuntoiu Vlad-Ioan gugalcrom Data 26 aprilie 2026 12:00:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

struct GrafOrientat {
    vector<vector<int>> v;
    GrafOrientat(int N) : v(N), vizitat(N, 0), dist(N, -1) {}
    void trasare(int a, int b) {
        v[a].push_back(b);
    }
    vector<int> vizitat;
    vector<int> dist;
    void bfs(int nod) {
        vizitat[nod] = 1;
        dist[nod] = 0;
        queue<int> q;
        q.push(nod);
        while(!q.empty()) {
            int x = q.front();
            q.pop();
            //cout << x << '\n';
            for(auto vecin: v[x]) {
                if(!vizitat[vecin]) {
                    q.push(vecin);
                    vizitat[vecin] = 1;
                    dist[vecin] = dist[x] + 1;
                }
            }
        }
    }
};

int main() {
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    int N, M, S;
    fin >> N >> M >> S;
    GrafOrientat G(N);
    for(int i=0; i<M; ++i) {
        int a, b;
        fin >> a >> b;
        G.trasare(a-1, b-1);
    }
    G.bfs(S-1);
    for(int i=0; i<N; ++i) {
        fout << G.dist[i] << ' ';
    }
    fout << '\n';
    return 0;
}