Cod sursa(job #2280692)

Utilizator andonis1616And Cuz andonis1616 Data 10 noiembrie 2018 23:45:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");

int n,m,s;
vector <int> muchii[NMAX];
queue <int> coada;
bool vizitat[NMAX];
int dist[NMAX];

void BFS(int x)
{
    coada.emplace(x);
    vizitat[x]=true;
    dist[x]=1;
    int nod_coada,nod_curent;
    while(!coada.empty()){
        nod_coada=coada.front();
        coada.pop();
        for(auto i=muchii[nod_coada].begin();i!=muchii[nod_coada].end();i++){
            nod_curent=*i;
            if(!vizitat[nod_curent]){
                vizitat[nod_curent]=true;
                dist[nod_curent]=dist[nod_coada]+1;
                coada.push(nod_curent);
            }
        }
    }
}

int main()
{
    int i,x,y;
    in>>n>>m>>s;
    for(i=1;i<=m;i++){
        in>>x>>y;
        muchii[x].emplace_back(y);
    }
    BFS(s);
    for(i=1;i<=n;i++){
        out<<dist[i]-1<<' ';
    }
    return 0;
}