Cod sursa(job #2409382)

Utilizator mihaicivMihai Vlad mihaiciv Data 18 aprilie 2019 22:50:58
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100100
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> a[NMAX];
int dist[NMAX], listArr[NMAX];
int n, m, nodSt;
void citire() {
    f >> n >> m >> nodSt;
    nodSt--;
    for (int i = 0; i < m; ++i) {
        int x, y;
        f >> x >> y;
        x --;
        y --;
        a[x].push_back(y);
    }
}
void BFS(int x) {
    int st;
    int dr;
    st = 0;
    dr = 0;
    listArr[st] = x;
    dist[x] = 1;
    while (st <= dr) {
        int curr = listArr[st];
        st ++;
        for (int i = 0; i < a[curr].size(); ++i) {
            int nodeCrt = a[curr][i];
            if (!dist[nodeCrt]) {
                dist[nodeCrt] = dist[curr] + 1;
                dr ++;
                listArr[dr] = nodeCrt;
            }
        }
    }
    for (int i = 0; i < n; ++i) {
        if (!dist[i]) {
            g << "-1 ";
        } else {
            g << dist[i] - 1 << " ";
        }
    }

}
void rez() {
    BFS(nodSt);
}
int main() {
    citire();
    rez();
    return 0;
}