Cod sursa(job #2267143)

Utilizator urweakurweak urweak Data 23 octombrie 2018 12:29:28
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

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

const int NLIM = 100005;

int N, M;

vector < int > Muchii[NLIM];

int distana[NLIM];

queue <int> Coada;

void BFS(){
    int nod, vecin;
        while(!Coada.empty()){
            nod = Coada.front();
            Coada.pop();
            for(unsigned int i = 0; i < Muchii[nod].size(); i++){
                vecin = Muchii[nod][i];
                    if(distana[vecin] == -1){
                        Coada.push(vecin);
                        distana[vecin] = distana[nod] + 1;
                    }
            }
        }
}

void Citire(){
    int nodStart;
    fin >> N >> M >> nodStart;
    for(int i = 1; i<=M; i++)
    {
        int x , y;
        fin >> x >> y;
        Muchii[x].push_back(y);
    }

    for(int i = 1; i<=N; i++)
        distana[i] = -1;
    distana[nodStart] = 0;
    Coada.push(nodStart);
    BFS();
    for(int i = 1; i<=N ; i++)
        fout << distana[i] <<" ";
}


int main(){
    Citire();
}