Cod sursa(job #1895262)

Utilizator andreinmAndrei andreinm Data 27 februarie 2017 21:05:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>

using namespace std;

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

const int NM = 100005;

int N, E, S, from, to, edge, crt_node, i;
int cost[NM];
queue <int> Q;
vector <int> G[NM];

int main()
{
    in >> N >> E >> S;
    for (edge = 1; edge <= E; ++edge) {
        in >> from >> to;
        G[from].push_back(to);
    }

    memset(cost, -1, sizeof cost);

    cost[S] = 0;
    Q.push(S);

    while (!Q.empty()) {
        crt_node = Q.front();
        Q.pop();

        for (auto &it: G[crt_node]) {
            if (cost[it] == -1) {
                cost[it] = cost[crt_node]+1;
                Q.push(it);
            }
        }
    }

    for (i = 1; i <= N; ++i) {
        out << cost[i] << ' ';
    }

    return 0;
}