Cod sursa(job #2658934)

Utilizator StefanSanStanescu Stefan StefanSan Data 15 octombrie 2020 15:20:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include      <iostream>
#include      <fstream>
#include      <algorithm>
#include      <vector>
#include      <queue>

using namespace std;

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

int n, m, s, d[100001];

bool vizitat[100001];

vector < int > G[100001];
queue  < int > coada;

int main() {
    ios::sync_with_stdio(false);
    in.tie(NULL), out.tie(NULL);

    in >> n >> m >> s;

    for (int i = 1; i <= n; i++) d[i] = -1;

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

    vizitat[s] = true;
    d[s] = 0;
    coada.push(s);

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

        for (auto u : G[nod_curent]) 
            if (vizitat[u] == false) {
                vizitat[u] = true;
                coada.push(u);
                d[u] = d[nod_curent] + 1;
            }
    }

    for (int i = 1; i <= n; i++) out << d[i] << ' ';

    return 0;

}