Pagini recente » Cod sursa (job #3186803) | Cod sursa (job #1048801) | Cod sursa (job #652177) | Cod sursa (job #510859) | Cod sursa (job #2360186)
#include <fstream>
#include <vector>
#include <algorithm>
#define inf 1000000000
using namespace std;
ifstream fin("risc.in");
ofstream fout("risc.out");
int n, m, q, i, x[302], d[302][302], sol[100001], a, b, c, j, t = 1, k, ind;
vector<pair<int, long long> > v[302];
pair<pair<int, int>, pair<int, int> > qq[100001];
int main(){
fin>>n>>m>>q;
for(i=1;i<=n;i++)
fin>>x[i];
sort(x+1, x+n+1);
while(m--){
fin>>a>>b>>c;
v[a].push_back({b, c});
v[b].push_back({a, c});
d[a][b] = d[b][a] = c;
}
for(i=1;i<=q;i++){
fin>>qq[i].second.first>>qq[i].second.second>>qq[i].first.first;
qq[i].first.second = i;
}
sort(qq+1, qq+q+1);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(d[i][j] == 0)
d[i][j] = inf;
for(k=1;k<=n;k++){
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}
for(i=1;i<=q;i++){
if(sol[i] == inf)
sol[i] = -1;
fout<<sol[i]<<"\n";
}
return 0;
}
/*while(x[k] <= qq[t].first.first){
ind = qq[t].first.second;
a = qq[t].second.first;
b = qq[t].second.second;
sol[ind] = d[a][b];
t++;
}*/