Cod sursa(job #2211502)

Utilizator costelus1catalin costica costelus1 Data 10 iunie 2018 18:05:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

void bfs(const vector<vector<int>> A, int s)
{
    queue<int> Q;
    size_t n = A.size();
    n = n - 1;
    int d[n + 1];
    fill_n(d, n + 1, -1);
    d[s] = 0;
    Q.push(s);
    while (!Q.empty())
    {
        int u = Q.front();
        Q.pop();
        // go all over the neighbors of the vertex we deleted from the queue
        for (int i = 0; i < A[u].size(); i++)
        {
            int v = A[u][i];
            if (d[v] == -1) // not visited
            {
                d[v] = d[u] + 1;
                Q.push(v);
            }
        }
    }
    ofstream fout("bfs.out");
    for (int i = 1; i <= n; i++)
        fout << d[i] << " ";
}

int main()
{
    ifstream fin("bfs.in");
    int n, m;
    int s; // the starting node
    fin >> n >> m >> s;
    vector<vector<int>> A((size_t)(n + 1));
    int x, y;
    for (int i = 1; i <= m; i++)
    {
        fin >> x >> y;
        A[x].push_back(y);
    }
    bfs(A, s);
    return 0;
}