Cod sursa(job #2559512)

Utilizator TzigCurta Tudor Tzig Data 27 februarie 2020 12:54:02
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream f("date.in");
ofstream g("date.out");

const int NMAX = 100005;
const int INF = (int)1e18;

vector <int> X[NMAX];
queue <int> Q;

int N,M;
int NodStart;
bool Viz[NMAX];
int D[NMAX];

void BFS()
{
    D[NodStart]=0;
    Viz[NodStart]=1;
    Q.push(NodStart);
    while(!Q.empty()){
        int Curent=Q.front();
        Q.pop();
        for(unsigned int i=0;i<X[Curent].size();i++){
            int Vecin=X[Curent][i];
            if(!Viz[Vecin]){
                D[Vecin]=D[Curent]+1;
                Viz[Vecin]=1;
                Q.push(Vecin);
            }
        }
    }
}

int main()
{
    f>>N>>M>>NodStart;
    while(M){
        int i,j;
        f>>i>>j;
        X[i].push_back(j);
        M--;
    }
    for(int i=1;i<=N;i++){
        D[i]=INF;
    }
    BFS();
    for(int i=1;i<=N;i++){
        if(D[i]==INF){
            g<<-1<<" ";
        }else{
            g<<D[i]<<" ";
        }
    }
    f.close();
    g.close();
    return 0;
}