Cod sursa(job #2702157)

Utilizator DragosC1Dragos DragosC1 Data 2 februarie 2021 23:59:48
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;

int n;
vector<int> a[100001];
int d[100001];
int viz[100001];

void bfs(int x) {
    int i, st, dr, Q[100001];
    st = dr = 0;
    viz[x] = 1;
    d[x] = 0;
    Q[st] = x;
    while (st <= dr) {
        x = Q[st++];
        for (i = 0; i < a[x].size(); i++)
            if (!viz[a[x][i]]) {
                viz[a[x][i]] = 1;
                d[a[x][i]] = d[x] + 1;
                Q[++dr] = a[x][i];
            }
    }
}

int main() {
    int i, m, x, y, S;
    
    ifstream f("bfs.in");
    f >> n >> m >> S;
    for (i = 1; i <= m; i++) {
        f >> x >> y;
        a[x].push_back(y);
    }
    f.close();

    for (i = 1; i <= n; i++)
        d[i] = -1;
    bfs(S);

    ofstream g("bfs.out");
    for (i = 1; i <= n; i++)
        g << d[i] << ' ';
    g.close();
    
    return 0;
}