Cod sursa(job #2541907)

Utilizator KPP17Popescu Paul KPP17 Data 9 februarie 2020 09:30:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
using namespace std;



#define fisier "bfs"

#ifdef fisier
    #include <fstream>
    ifstream in(fisier ".in");
    ofstream out(fisier ".out");
#else
    #include <iostream>
    #define in cin
    #define out cout
#endif



const int
MAX_N = 100000;

int de_scris[MAX_N], n, s;

#include <vector>
vector<int> de_la[MAX_N];



void bfs() {

    int coada[MAX_N];

    *coada = s;

    de_scris[s] = 1;

    for (int baza = 0, varf = 1; baza < varf; baza++) {

        for (vector<int>::iterator vecin = de_la[coada[baza]].begin(); vecin != de_la[coada[baza]].end(); vecin++) {

            if (!de_scris[*vecin]) {

                de_scris[*vecin] = de_scris[coada[baza]] + 1;

                coada[varf++] = *vecin;

            }

        }

    }

}



int main() {

    int m, x, y;

    in >> n >> m >> s;
    s--;

    while (m--) {

        in >> x >> y;
        x--; y--;

        de_la[x].push_back(y);

    }

    bfs();

    for (int i = 0; i < n; i++) {

        out << de_scris[i] - 1 << ' ';

    }

}
















//