Cod sursa(job #2055838)

Utilizator papinub2Papa Valentin papinub2 Data 3 noiembrie 2017 20:13:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

int n, m, x, y, S;
int viz[100005];
vector <int> A[100005];
queue <int> Q;

void BFS (int S)
{
    viz[S] = 1;
    Q.push(S);

    while (!Q.empty())
    {
        x = Q.front();
        Q.pop();

        for (int i = 0; i < A[x].size(); i++)
        {
            if (!viz[A[x][i]])
            {
                Q.push(A[x][i]);
                viz[A[x][i]] = viz[x] + 1;
            }
        }
    }
}

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

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

    BFS(S);

    for (int i = 1; i <= n; i++)
        out << viz[i] - 1 << ' ';

    return 0;
}