Cod sursa(job #2924608)

Utilizator cqrol__Stanciu Carol cqrol__ Data 6 octombrie 2022 11:25:25
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb

#include <fstream>

using namespace std;
ifstream fin ("BFS.in");
ofstream out("BFS.out");

int q[101], p, u, viz[101], ans[101], aux[101];
int v[101][101];
int n, m, x;

void BFS ()
{
    for(int i = 1; i<= n; i++){
        ans[i] = -1;
    }
    ans[x] = 0;
    p = u = 1;
    q[u] = x;
    viz[x]++;
    aux[1] = x;
    int nr = 1;
    while(p <= u)
    {
        int nod = q[p];
        p++;
        if(aux[nr] == nod){
            nr++;
        }
        int ult;
        for(int i = 1; i<= n; i++)
        {
            if(v[nod][i] == 1 && viz[i] == 0)
            {
                u++;
                q[u] = i;
                viz[i]++;
                ans[i] = nr - 1;
                ult = i;
            }
        }
        aux[nr] = ult;
    }
}

int main()
{
    fin >> n >> m >> x;
    for(int i = 1; i<= m; i++)
    {
        int a, b;
        fin >> a >> b;
        v[a][b] = 1;
    }
    BFS();
    for(int i = 1; i <= n; i++){
        out<<ans[i]<<' ';
    }
    return 0;
}