Cod sursa(job #2710073)

Utilizator Turturica_DorinTurturica Dorin Turturica_Dorin Data 21 februarie 2021 19:22:28
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define nrin 100005

vector <int> v[100005];
int c[ nrin ], d[nrin], n, m, i, x, y, s;

void BFS(int s){
    int st = 0, dr = 0, nc;
    c[dr] = s;
    while(st <= dr){
        nc = c[st];
        for(auto x:v[nc]){
            if(d[x] == -1){
                d[ x ] = 1 + d[ nc ];
                c[ ++dr ] = x;
            }
        }
        st++;
    }
}


int main()
{
    fin>>n>>m>>s;
    for(i = 1; i <= m; i++){
        fin>>x>>y;
        v[x].push_back(y);
    }
    for(i = 1; i <= n; i++)
        d[i] = -1;
    d[s] = 0;
    BFS(s);
    for(i = 1; i <= n; i++){
        fout<<d[i]<<" ";
    }
    return 0;
}