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
}