Cod sursa(job #3368776)

Utilizator ilystefalexVaduva Stefan-Alexandru ilystefalex Data 15 octombrie 2026 17:38:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

vector<int> vecini[100005];
int distanta[100005];
bool rezolvate[100005];
vector<int> pending;

void bfs() {
    for (size_t i = 0; i < pending.size(); i++) {
        int nod = pending[i];

        for (size_t j = 0; j < vecini[nod].size(); j++) {
            int vec = vecini[nod][j];
            if (!rezolvate[vec]) {
                rezolvate[vec] = true;
                distanta[vec] = distanta[nod] + 1;
                pending.push_back(vec);
            }
        }
    }
}

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

    int nod, m, n;
    fin >> n >> m >> nod;

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

    for (int i = 1; i <= n; i++) {
        distanta[i] = -1;
    }

    distanta[nod] = 0;
    rezolvate[nod] = true;
    pending.push_back(nod);

    bfs();

    for (int i = 1; i <= n; i++) {
        fout << distanta[i] << " ";
    }
    fout << "\n";

    return 0;
}