Cod sursa(job #2907313)

Utilizator robberttPopa Robert robbertt Data 29 mai 2022 17:46:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    ifstream cin("bfs.in");
    ofstream cout("bfs.out");
    int nodes, edgesNr, startNode, a, b;
    cin >> nodes >> edgesNr >> startNode;
    vector <vector<int>> edges(edgesNr);
    vector <bool> visit(nodes + 1, false);
    for(int i = 0; i < edgesNr; i++)
    {
        cin >> a >> b;
        edges[a].push_back(b);
    }
    vector <int> dist(nodes + 1, 999999);
    dist[startNode] = 0;
    vector <pair<int, int>> queue;
    int currentNode = 0;
    queue.push_back({startNode, 0});
    while(currentNode < queue.size())
    {
        dist[queue[currentNode].first] = min(dist[queue[currentNode].first], queue[currentNode].second);
        for(auto i : edges[queue[currentNode].first])
        {
            if(visit[i] == false)
                queue.push_back({i, queue[currentNode].second + 1}), visit[i] = true;
        }
        ++currentNode;
    }
    for(int i = 1; i <= nodes; i++)
    {
        cout << ((dist[i] != 999999) ? dist[i] : -1) << ' ';
    }
    return 0;
}