CSES - Shared codeLink 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;
}