Cod sursa(job #2524340)

Utilizator AlexBosneag26Bosneag Alexandru AlexBosneag26 Data 15 ianuarie 2020 15:24:26
Problema BFS - Parcurgere in latime Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;

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

const int N = 100001;
int d[N], vf[1000001], pred[N], urm[N], lst[N], q[N], nr, n, m, x;

void adauga(int x, int y)
{
    vf[++nr] = y;
    urm[nr] = lst[x];
    lst[x] = nr;
}

int main()
{
    int v1, v2, start;
    in >> n >> m >> start;
    for(int i = 1; i <= m; i++)
    {
        in >> v1 >> v2;
        adauga(v1, v2);
    }

    for(int i = 1; i <= n; i++)
    {
        d[i] = -1;
    }
    d[start] = 0;

    int st = 0, dr = -1;
    q[++dr] = start;
    while(st <= dr)
        {
        x = q[st++];
        for(int p = lst[x]; p != 0; p = urm[p])
        {
            int y = vf[p];
            if(d[y] == -1)
            {
                d[y] = 1 + d[x];
                q[++dr] = y;
                pred[y] = x;
            }
        }
        }
    for(int  i = 1; i <= n; i++)
    {
        out << d[i] << " ";
    }
    return 0;
}