Cod sursa(job #2451116)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 25 august 2019 19:40:32
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>
#include <queue>

int main()
{
    std::vector<std::vector<size_t>> graph(100000 + 1, std::vector<size_t>());
    std::vector<int> distance(100000 + 1, -1);
    size_t N, M, S, x, y;

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

    fin >> N >> M >> S;

    while(fin >> x >> y) graph[x].push_back(y);

    std::queue<size_t> q;

    q.push(S);
    distance[S] = 0;

    while(!q.empty())
    {
        size_t current_node = q.back();
        q.pop();

        for(std::vector<size_t>::iterator it = graph[current_node].begin(); it < graph[current_node].end(); it++)
        {
            if(distance[*it] == -1)
            {
                distance[*it] = distance[current_node] + 1;
                q.push(*it);
            }
        }
    }

    for(size_t i = 1; i <= N; i++) fout << distance[i] << ' ';

}