Link to this code: https://cses.fi/paste/ae8befa358410ca7a15916/
#include <bits/stdc++.h>
#define uwu return 0;
using namespace std;

const int SIZE = 5e2 + 5;

const long long INF = 1e18 + 5;

long long dp[2][SIZE][SIZE];

void ch_min(long long &a, long long b){
    a = min(a, b);
    return;
}

int main(){
    cin.tie(0), ios::sync_with_stdio(0);
    int V, E, Q;
    cin >> V >> E >> Q;
    
    for (int i = 1; i <= V; i++){
        for (int j = 1; j <= V; j++){
            dp[0][i][j] = INF;
            dp[1][i][j] = INF;
        }
    }

    for (int u, v, w; E--;){
        cin >> u >> v >> w;
        ch_min(dp[0][u][v], w);
        ch_min(dp[0][v][u], w);
        ch_min(dp[1][u][v], w);
        ch_min(dp[1][v][u], w);
    }

    for (int i = 1; i <= V;i++){
        dp[0][i][i] = 0;
        dp[1][i][i] = 0;
    }

    for (int i = 1; i <= V; i++){
        for (int u = 1; u <= V; u++){
            for (int v = 1; v <= V; v++){
                ch_min(dp[i & 1][u][v], min(dp[!(i & 1)][u][i] + dp[!(i & 1)][i][v], dp[!(i & 1)][u][v]));
            }
        }
    }

    for (int u, v; Q--;){
        cin >> u >> v;
        if(dp[V & 1][u][v] >= INF)
            cout << "-1\n";
        else
            cout << dp[V & 1][u][v] << '\n';
    }

    uwu
}