Cod sursa(job #2537608)

Utilizator RaaaulBaciulescu Raul Raaaul Data 3 februarie 2020 19:59:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
int x1, y1, x, y, st, dr, nr, coada[100002], i, viz[100002], n, ok, S, m;
struct lista
{
    int nod;
    lista *urm;
}*g[100002], *p;
int main ()
{
    fin >> n >> m >> S;
    for (i = 1; i <= m; i ++)
    {
        fin >> x >> y;
        p = new lista;
        p -> nod = y;
        p -> urm = g[x];
        g[x] = p;
    }
    for (i = 1; i <= n; i ++) viz[i] = -1;
    st = dr = 1;
    coada[st] = S;
    viz[S] = 0;
    while (st <= dr)
    {
        p = g[coada[st]];
        while (p)
        {
            if (viz[p -> nod] == -1)
            {
                viz[p -> nod] = viz[coada[st]] + 1;
                dr ++;
                coada[dr] = p -> nod;
            }
            p = p -> urm;
        }
        st ++;
    }
    for(i = 1; i <= n; i ++)
        fout << viz[i] << " ";
}