Cod sursa(job #2734246)

Utilizator andreicosmaAndrei Cosma andreicosma Data 31 martie 2021 16:21:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <deque>
#include <fstream>
#include <vector>
#define dim 100005
using namespace std;

string file = "bfs";
ifstream fin(file + ".in");
ofstream fout(file + ".out");
vector<int> L[dim];
deque<int> q;
int d[dim];
bool fr[dim];
int n, m, start, x, y;
inline void bfs( int nod ){
    fr[nod] = true;
    d[nod] = 0;
    q.push_back(nod);
    while(!q.empty()){
        nod = q.front();
        q.pop_front();
        for( int i = 0; i < L[nod].size(); ++i )
            if(!fr[L[nod][i]]){
                fr[L[nod][i]] = true;
                d[L[nod][i]] = d[nod] + 1;
                q.push_back(L[nod][i]);
            }
    }
}


int main(){
    fin>>n>>m>>start;
    for( int i = 1; i <= m; ++i ){
        fin>>x>>y;
        L[x].push_back(y);
    }
    bfs(start);
    for( int i = 1; i <= n; ++i )
        if(fr[i] == 0)
            fout<<-1<<" ";
        else
            fout<<d[i]<<" ";
    return 0;
}