Cod sursa(job #2162573)

Utilizator loo_k01Luca Silviu Catalin loo_k01 Data 12 martie 2018 11:58:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;

const int Nmax = 100005;
const int INF = LONG_MAX;

ofstream fout("bfs.out");
int N, M, S;
vector < int > L[Nmax];
queue < int > q;
int d[Nmax];

void Read()
{
    ifstream fin("bfs.in");
    fin >> N >> M >> S;
    int x, y;
    while(M--)
    {
        fin >> x >> y;
        L[x].push_back(y);
    }
    fin.close();
}

void Initializare()
{
    for (int i = 1; i <= N; i++)
        d[i] = INF;
}

void BFS()
{
    int nod;
    d[S] = 0;
    q.push(S);

    while(!q.empty())
    {
        nod = q.front();
        q.pop();
        for (auto i : L[nod])
            if (d[i] == INF) /// !viz[i]
            {
                d[i] = d[nod] + 1;
                q.push(i);
            }
    }
}

void Afisare()
{
    int i;
    for (i = 1; i <= N; i++)
        fout << (d[i] == INF? -1 : d[i]) << " ";
    fout << "\n";
    fout.close();
}

int main()
{
    Read();
    Initializare();
    BFS();
    Afisare();
    return 0;
}