Cod sursa(job #3141726)

Utilizator AndreiPaval03Andrei Paval AndreiPaval03 Data 15 iulie 2023 20:54:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

    int n; fin >> n;
    int m; fin >> m;
    int source; fin >> source;
    vector<vector<int>> adj(n + 1, vector<int>());
    for (int i = 1; i <= m; ++i) {
        int x; fin >> x;
        int y; fin >> y;
        adj[x].push_back(y);
    }

    queue<int> q;
    vector<int> min_number_of_edges(n + 1, -1);
    
    q.push(source);
    min_number_of_edges[source] = 0;
    while (!q.empty()) {
        int u = q.front();
        q.pop();

        for (int v : adj[u]) {
            if (min_number_of_edges[v] == -1) {
                min_number_of_edges[v] = min_number_of_edges[u] + 1;
                q.push(v);
            }
        }
    }

    for (int i = 1; i <= n; ++i) {
        fout << min_number_of_edges[i] << ' ';
    }
    
    return 0;
}