Cod sursa(job #2055826)

Utilizator papinubPapa Victor papinub Data 3 noiembrie 2017 19:56:07
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <vector>
#include <deque>

using namespace std;

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

int n, m, x, y, pret, S;
int viz[100001];
vector <int> A[100001];
deque <int> Q;

void BFS (int S)
{
    int prim = 0, ultim = 0;

    viz[S] = 1;

    Q[0] = S;

    while (prim <= ultim)
    {
        S = Q[prim++];
        pret++;

        for (int i = 0; i < A[S].size(); i++)
        {
            if (!viz[A[S][i]])
            {
                Q.push_back(A[S][i]);
                ultim++;

                viz[A[S][i]] = pret;
            }
        }
    }
}

int main()
{
    in >> n >> m >> S;

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

    BFS(S);

    viz[S] = 0;

    for (int i = 1; i <= n; i++)
    {
        if (viz[i] == 0 && i != S)
            out << -1 << ' ';

        else

            out << viz[i] << ' ';
    }

    return 0;
}