Cod sursa(job #2544817)

Utilizator R3v1v3RAlexe Paul R3v1v3R Data 12 februarie 2020 15:50:00
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <climits>
#include <algorithm>

#define INfile "bfs.in"
#define OUTfile "bfs.out"
#define LMax 100001

using namespace std;

ifstream fin(INfile);
ofstream fout(OUTfile);

vector <int>v[LMax];
vector <int>Values;
int x, y, n, m, p;

void BFS(int NODE) {
    int lim = v[NODE].size();
    for (int i = 0; i < lim;  ++i) {
        int urm = v[NODE][i];
        if (Values[NODE] + 1 < Values[urm] || Values[urm] == -1)
            Values[urm] = Values[NODE] + 1, BFS(urm);
    }
}

int main() {
    fin >> n >> m >> p;
    for (int i = 0; i <= n; ++i)
        Values.push_back(-1);
    Values[p] = 0;
    for (int i = 1; i <= m; ++i)
        fin >> x >> y, v[x].push_back(y);
    BFS(p);
    for (int i = 1; i <= n; ++i)
        fout << Values[i] << ' ';
    return 0;
}