Cod sursa(job #2667212)

Utilizator albertyoAlbert Mindrescu albertyo Data 3 noiembrie 2020 02:39:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <vector>
#include <queue>

#define N 100005
using namespace std;

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

int n, m, s, prim, viz[N], rez[N];
vector <int> muchii[N];
queue <int> coada;

void BFS() {

    int i;

    while(!coada.empty()) {

        prim = coada.front();
        coada.pop();
        for(i = 0; i < muchii[prim].size(); i++) {

            if(viz[muchii[prim][i]] == 0) {

                coada.push(muchii[prim][i]);
                rez[muchii[prim][i]] = rez[prim] + 1;
                viz[muchii[prim][i]] = 1;
            }

        }
    }
}

int main()
{
    int i;
    fin >> n >> m >> s;
    for (i = 1; i <= m; i++) {

        int x, y;
        fin >> x >> y;
        muchii[x].push_back(y);
    }

    coada.push(s);
    viz[s] = 1;
    for (i = 1; i <= n; i++)
        rez[i] = -1;

    rez[s] = 0;
    BFS();

    for (i = 1; i <= n; i++)
        fout << rez[i] << " ";

    return 0;
}