Cod sursa(job #3270818)

Utilizator Roxana_3Asavei Roxana Roxana_3 Data 24 ianuarie 2025 15:39:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <queue>
#include <vector>
using namespace std;

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

int n, m, s;
vector<vector<int>> g;

void read() {
    int nod1, nod2;
    fin >> n >> m >> s;
    g.resize(n + 1);
    for (int i = 0; i < m; ++i) {
        fin >> nod1 >> nod2;
        g[nod1].push_back(nod2);
    }
}

void bfs(int nod) {
    queue<int> q;
    vector<bool> visited(n + 1, false);
    vector<int> dist(n + 1, -1);

    dist[nod] = 0;
    q.push(nod);
    visited[nod] = true;

    while (!q.empty()) {
        int nod = q.front();
        q.pop();
        for (auto vecin : g[nod]) {
            if (!visited[vecin]) {
                dist[vecin] = dist[nod] + 1;
                q.push(vecin);
                visited[vecin] = true;
            }
        }
    }

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

void solve() {
    bfs(s);
}

int main() {
    read();
    solve();
    return 0;
}