Cod sursa(job #2514058)

Utilizator teomdn001Moldovan Teodor teomdn001 Data 24 decembrie 2019 14:14:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;

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

const int MaxN = 100005;

vector <int> V[MaxN];
queue <int> Q;
int vizitat[MaxN];

int n, m, start;
void BFS(int nod);

int main()
{
    fin >> n >> m >> start;

    int x, y;
    for (int i = 1; i <= m; ++i)
    {
        fin >> x >> y;
        V[x].push_back(y);
    }

    for (int i = 1; i <= n; ++i)
        vizitat[i] = -1;

    Q.push(start);
    BFS(start);

    for (int i = 1; i <= n; ++i)
        fout << vizitat[i] << ' ';

}

void BFS(int nod)
{
    vizitat[nod] = 0;
    while(!Q.empty())
    {
        int curent = Q.front();
        Q.pop();

        for (unsigned int i = 0; i < V[curent].size(); ++i)
        {
            int Next = V[curent][i];
            if(vizitat[Next] == -1)
            {
                Q.push(Next);
                vizitat[Next] = vizitat[curent] + 1;
            }
        }
    }
}