Cod sursa(job #2374626)

Utilizator edynator34Nechitoaia George-Edward edynator34 Data 7 martie 2019 19:41:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define inf (1<<30)
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector < int > arbore[100005];
queue < int > coada;
int raspuns[100005];
int n,m,sursa,x,y;
void bfs(int sursa){
    for (int i=1;i<=n;++i){
        raspuns[i]=inf;
    }
    raspuns[sursa]=0;
    coada.push(sursa);
    while(!coada.empty()){
        int nod=coada.front();
        coada.pop();
        vector < int > ::iterator it;
        for(it=arbore[nod].begin();it!=arbore[nod].end();++it)
            {
            int vecin=*it;
            if(raspuns[vecin]==inf) {
                    raspuns[vecin]= raspuns[nod]+1;
                    coada.push(vecin);
        }}

    }

}
int main()
{
    in>>n>>m>>sursa;
    for(int i=1;i<=m;++i){
        in>>x>>y;
        arbore[x].push_back(y);
    }
    bfs(sursa);
    for(int i=1;i<=n;++i){
        if(raspuns[i]==inf) out<<-1<<' ';
        else out<<raspuns[i]<<' ';
    }
    return 0;
}