Cod sursa(job #2955130)

Utilizator juincPopescu Marian juinc Data 16 decembrie 2022 13:17:44
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

void bfs(std::vector<std::vector<int>>& g, std::vector<int>& dist,int s,int n) {
    std::queue<int> q; 
    for (int i = 1; i <= n; i++) dist[i] = -1; 
    dist[s] = 0; 
    q.push(s); 
    while (!q.empty()) {
        int u = q.front(); 
        q.pop();
        for (int v : g[u]) { 
            if (dist[v] == -1) { 
                dist[v] = dist[u] + 1; 
                q.push(v); 
            }
        }
    }
}

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

    int n, m, s;
    fin >> n >> m >> s;

    std::vector<std::vector<int>> g(n + 1);
    std::vector<int> dist(n + 1);
    for (int i = 1; i <= m; i++) {
        int x, y;
        fin >> x >> y;
        g[x].push_back(y); 
    }
    fin.close();

    bfs(g,dist,s, n); 
	
    for (int i = 1; i <= n; i++) fout << dist[i] << " ";
    fout.close();

    return 0;
}