Cod sursa(job #2628505)

Utilizator JackstilAdascalitei Alexandru Jackstil Data 16 iunie 2020 11:04:18
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

#define MAX 100001

int n, m, s, x, y, distante[MAX];
vector <int> g[MAX];
queue <int> coada;

void bfs() {
    int nod, vecin;

    while (!coada.empty()) {
        nod = coada.front();
        coada.pop();

        for (unsigned int i = 0; i < g[nod].size(); ++i) {
            vecin = g[nod][i];

            if (distante[vecin] == -1) {
                coada.push(vecin);
                distante[vecin] = distante[nod] + 1;
            }
        }
    }
}

void citire() {
    in >> n >> m >> s;

    for (int i = 1; i <= m; ++i) {
        in >> x >> y;
        g[x].push_back(y);
    }

    for (int i = 1; i <= n; ++i)
        distante[i] = -1;
    distante[s] = 0;
}

int main() {
    citire();

    coada.push(s);

    bfs();

    for (int i = 1; i <= n; ++i)
        out << distante[i] << " ";
    return 0;
}