Cod sursa(job #2425403)

Utilizator CristyXtremeSimion Cristian CristyXtreme Data 24 mai 2019 19:44:12
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

vector <vector <int> > v(100001);

void bfs(int s, int n) {
    queue <int> Q;
    vector <int> d(n + 1, 0x3f3f3f3f);
    
    d[s] = 0;
    Q.push(s);

    while (!Q.empty()) {
        int curent = Q.front();
        Q.pop();

        for (auto vecin : v[curent]) {
            if (d[vecin] > d[curent] + 1) {
                d[vecin] = d[curent] + 1;
                Q.push(vecin);
            }
        }
    }

    d.erase(d.begin());
    for (auto dist : d) {
        if (dist == 0x3f3f3f3f)
            out << -1 << ' ';
        out << dist << ' ';
    }
}

int main() {
    int n, m, s;
    int a, b;

    in >> n >> m >> s;
    for (int i = 0; i < m; i++) {
        in >> a >> b;
        v[a].push_back(b);
    }

    bfs(s, n);
    return 0;
}