Cod sursa(job #2524338)

Utilizator Ioan_AnghelIoan Anghel Ioan_Anghel Data 15 ianuarie 2020 15:19:43
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N = 1000001, M = 2000001;
int nr, vf[2 * M], urm[2 * M], lst[N], n, cnt = 0, s, d[100], q[100];
bool viz[N];

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

void bfs(int s)
{
    int x, y;
    int st = 0, dr = -1;
    for(int i = 1; i <= n; i++){
        d[i] = -1;
    }
    d[s] = 0;
    q[++dr] = s;
    while(st <= dr){
        x = q[st++];
        for(int p = lst[x]; p != 0; p = urm[p]){
            y = vf[p];
            if(d[y] == - 1){
                d[y] = 1 + d[x];
                q[++dr] = y;
            }
        }
    }
}

int main()
{
    int m;
    in >> n >> m >> s;
    for(int i = 0; i < m; i++){
        int x, y;
        in >> x >> y;
        adauga(x, y);
    }
    bfs(s);
    for(int i = 1; i <= n; i++){
        out << d[i] << " ";
    }


    return 0;
}