Submission

Status:
(PPPP)(PPPPPP)(PPPPPPPPPP)

Score: 100

User: detectives_conan

Problemset: ย้อนศร

Language: cpp

Time: 0.417 second

Submitted On: 2025-01-03 20:13:41

/*
Author : detective conan
problem : ย้อนศร
*/
#include <bits/stdc++.h>
#define int long long

using namespace std;

const bool HAVE_TESTCASE = false;

int n, m, u, v, q, dis[100100];
vector<int> vc[100100], re[100100];

void sol(int a, int b){
    for(int i = 1; i <= n; ++i) dis[i] = 1e9;
    dis[a] = 0;
    deque<int> dq;
    dq.push_front(a);
    while(!dq.empty()){
        int u = dq.front(); dq.pop_front();
        for(auto v:vc[u]){
            if(dis[v] > dis[u]){
                dis[v] = dis[u];
                dq.push_front(v);
            }
        }
        for(auto v:re[u]){
            if(dis[v] > dis[u] + 1){
                dis[v] = dis[u] + 1;
                dq.push_back(v);
            }
        }
    }
    cout << dis[v] << '\n';
}

void solve(){
    cin >> n >> m;
    for(int i = 1; i <= m; ++i) cin >> u >> v, vc[u].push_back(v), re[v].push_back(u);
    cin >> q;
    while(q--){
        cin >> u >> v;
        sol(u, v);
    }
}

int32_t main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    int t = 1;
    if(HAVE_TESTCASE) cin >> t;
    while(t--) solve();
}