Link to this code: https://cses.fi/paste/02eb22e3b515ad5466fff5/
#include<bits/stdc++.h>
using namespace std;
int main(){
  int cities,roads,queries,a,b,length;
  cin>>cities>>roads>>queries;
  vector<vector<long long>>distance(cities+1,vector<long long>(cities+1,1e16));
  for(int city=1;city<=cities;city++)distance[city][city]=0;
  for(int road=1;road<=roads;road++){
    cin>>a>>b>>length;
    distance[a][b]=min(distance[a][b],1ll*length);
    distance[b][a]=min(distance[b][a],1ll*length);
  }
for(int intermediateCity=1;intermediateCity<=cities;intermediateCity++){  
  for(int cityA=1;cityA<=cities;cityA++){
    for(int cityB=1;cityB<=cities;cityB++){
        distance[cityA][cityB]=min(distance[cityA][cityB],distance[cityA][intermediateCity]+distance[intermediateCity][cityB]);
      }
    }
  }
  while(queries--){
    cin>>a>>b;
    if(distance[a][b]==1e16)
      cout<<-1<<endl;
    else
    cout<<distance[a][b]<<endl;
  }
  return 0;
}