Cod sursa(job #3358272)

Utilizator NFJJuniorIancu Ivasciuc NFJJunior Data 15 iunie 2026 22:34:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;

int n, m, s;
vector<vector<int>> adj;
vector<int> dist;

void bfs(int start)
{
    queue<pair<int, int>> q;

    q.push({start, 0});
    dist[start] = 0;

    while (!q.empty()) {
        auto [node, depth] = q.front();
        q.pop();

        for (int next : adj[node]) {
            if (dist[next] == -1) {
                q.push({next, depth + 1});
                dist[next] = depth + 1;
            }
        }
    }
}

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);

    cin >> n >> m >> s;
    s--;

    adj.resize(n);
    dist.resize(n, -1);

    for (int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        adj[--u].push_back(--v);
    }

    bfs(s);

    for (int d : dist)
        cout << d << ' ';
    cout << '\n';

    return 0;
}