Cod sursa(job #2152284)

Utilizator CammieCamelia Lazar Cammie Data 5 martie 2018 13:29:15
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>
#include <queue>

#define MAXN 100005

using namespace std;

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

queue <int> Q;
vector <int> graph[MAXN];

int viz[MAXN];

inline void BFS(int start) {
    int z;

    Q.push(start); viz[start] = 1;

    while (!Q.empty()) {
        z = Q.front();

        for (auto x : graph[z]) {
            if (!viz[x]) {
                viz[x] = viz[z] + 1;

                Q.push(x);
            }
        }

        Q.pop();
    }
}

inline void Read() {
    int N, M, start, x, y;

    fin >> N >> M >> start;

    for (int i = 1; i <= M; i++) {
        fin >> x >> y;

        graph[x].push_back(y);
    }

    BFS(start);

    for (int i = 1; i <= N; i++) {
        fout << viz[i] - 1 << " ";
    }
}

int main () {
    Read();

    fin.close(); fout.close(); return 0;
}