#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
vector<vector<pair<int,int>>> vec;
vector<int> dis;
vector<bool> vis;
void bfs(int nodo)
{
    priority_queue<pair<int,int>> cola;
    cola.push({0,nodo});
    dis[nodo]=0;
    while(!cola.empty())
    {
        nodo=cola.top().second;
        cola.pop();
        if(!vis[nodo]){
            for(pair<int,int> next:vec[nodo]) {
                if(dis[nodo]+next.second<dis[next.first]){
                    dis[next.first]=dis[nodo]+next.second;
                    cola.push({-dis[next.first],next.first});
                }
            }
            vis[nodo]=true;
        }
    }
}
void solve()
{
    ll k,n,m,o; cin>>k>>n>>m>>o;
    vec.assign(n,vector<pair<int,int>> ());
    ll a,b,t;
    while(m--)
    {
        cin>>a>>b>>t;
        if(b==a+1)
        vec[a].push_back({b,t});
    }
    while(o--){
    vis.assign(n,false);
    dis.assign(n,1e6+1);
    cin>>a>>b;
    bfs(a); 
    if(dis[b]==1e6+1) cout<<"-1"<<endl;
    else cout<<dis[b]<<endl;
    }
}
int main()
{
    solve();
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |