Cod sursa(job #2150175)

Utilizator danutmafteiMaftei Danut danutmaftei Data 3 martie 2018 12:28:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <string.h>
#define Nmax 100005

using namespace std;

int n,m,S;

vector<int>lista[Nmax];
queue<int>coada;
int d[Nmax];///distanta de la S la orice nod

void citire()
{
    ifstream fin("bfs.in");
    fin>>n>>m>>S;

    int x,y;

    while(m--)
    {
        fin>>x>>y;

        lista[x].push_back(y);
    }

    memset(d,-1,sizeof(d));

    fin.close();

}

void BFS(int start)
{
    coada.push(start);
    d[start]=0;

    while(!coada.empty())
    {
        int nod=coada.front();
        coada.pop();

        for(size_t i=0;i<lista[nod].size();++i)
        {
            int vecin=lista[nod][i];

            if(d[vecin]==-1)
            {
                d[vecin]=d[nod]+1;
                coada.push(vecin);
            }
        }
    }
}
int main()
{
    citire();
    BFS(S);
    ofstream fout("bfs.out");

    for(int i=1;i<=n;++i)
        fout<<d[i]<<" ";
    return 0;
}