Cod sursa(job #3148123)

Utilizator andrei1807Andrei andrei1807 Data 29 august 2023 13:58:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

#define NMAX 100003

using namespace std;

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

bool vis[NMAX];
vector<int> g[NMAX];
int n, m, s, d[NMAX];

void bfs(int nod) {
    queue<int> next;
    next.push(nod);

    while (!next.empty()) {
        int curr = next.front();
        next.pop();
        vis[curr] = true;
        for (auto vec : g[curr]) {
            if (!vis[vec]) {
                next.push(vec);
                vis[vec] = true;
                if (d[curr] + 1 < d[vec] || d[vec] == 0)
                    d[vec] = d[curr] + 1;

            }
        }
    }
}

int main() {

    fin >> n >> m >> s;

    for (int q = 0; q < m; q++) {
        int x, y;
        fin >> x >> y;

        g[x].push_back(y);
    }

    d[s] = 1;
    bfs(s);

    for (int i = 1; i <= n; i++)
        fout << d[i]-1 << ' ';


    return 0;
}