Cod sursa(job #2516512)

Utilizator JafarakKarina Jafara Jafarak Data 31 decembrie 2019 20:21:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int Max=100005;

vector < int > Muchii[Max];
queue < int > coada;

int noduri,nrMuchii,startNod;
int distNod[Max];

void bfs ()
{
    int nod,nnod;
    unsigned int i;
    while(!coada.empty())
    {
        nod=coada.front();
        coada.pop();
        for(i=0;i < Muchii[nod].size();i++)
        {
            nnod=Muchii[nod][i];
            if(distNod[nnod]==-1)
            {
                coada.push(nnod);
                distNod[nnod]=distNod[nod]+1;
            }
        }
    }
}

void Read ()
{
    int i;
    f>>noduri>>nrMuchii>>startNod;
    for(i=1;i<=nrMuchii;i++)
    {
        int x,y;
        f>>x>>y;
        Muchii[x].push_back(y);// only goes forth
    }
}

void negativeNod()
{
    int i;
    for(i=1;i<=noduri;i++)
        distNod[i]=-1;
    coada.push(startNod); // add first pozition
    distNod[startNod]=0; // initial distance
}

void out ()
{
    int i;
    for(i=1;i<=noduri;i++)
        g<<distNod[i]<<" ";
    g<<'\n';
}

int main()
{
    Read();
    negativeNod();
    bfs();
    out();
    return 0;
}