Cod sursa(job #2494155)

Utilizator Emi09Buciu Emilian Emi09 Data 17 noiembrie 2019 13:55:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int DMAX = 100005;

unsigned int n, m;

int distanta[DMAX];

vector < unsigned int > muchii[DMAX];

queue < unsigned int > coada;

void BFS()
{
    unsigned 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];

            cout << vecin << ' ';

            if (distanta[vecin] == -1)
            {
                coada.push(vecin);
                distanta[vecin] = distanta[nod] + 1;
            }
        }
    }
}

void read()
{
    unsigned int nodStart;

    f >> n >> m >> nodStart;

    for (unsigned int i = 1; i <= m; i++)
    {
        unsigned int x, y;

        f >> x >> y;

        muchii[x].push_back(y);
    }

    for (unsigned int i = 1; i <= n; i++)
        distanta[i] = -1;
    distanta[nodStart] = 0;

    coada.push(nodStart);

    BFS();

    for (unsigned int i = 1; i <= n; i++)
        g << distanta[i] << ' ';

    g << endl;
}

int main()
{
    read();

    return 0;
}