Cod sursa(job #3277867)

Utilizator ioanabaduIoana Badu ioanabadu Data 17 februarie 2025 17:51:26
Problema Obiective Scor 35
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>

using namespace std;

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

vector <pair <int, int>> graph[32005];
int nodes, edges, queries;
deque <int> q;

int bfs01 (int start, int finish){
    vector <int> dist(32005, 1e9);

    dist[start] = 0;
    q.push_front(start);

    while (!q.empty()){
        int current = q.front();
        q.pop_front();

        for (auto idx:graph[current]){
            if (dist[idx.first] > dist[current] + idx.second){
                dist[idx.first] = dist[current] + idx.second;
                if (idx.second == 1)
                    q.push_back(idx.first);
                else
                    q.push_front(idx.first);
            }
        }
    }

    return dist[finish];
}

int main (){
    int x, y;

    in >> nodes >> edges;
    for (int i=1; i<=edges; ++i){
        in >> x >> y;

        graph[x].push_back({y, 0});
        graph[y].push_back({x, 1});
    }

    in >> queries;
    for (;queries; --queries){
        in >> x >> y;
        out << bfs01(x, y) << '\n';
    }

    return 0;
}