Pagini recente » Cod sursa (job #3258134) | Cod sursa (job #1420847) | Cod sursa (job #284502) | Cod sursa (job #82033) | Cod sursa (job #2513969)
#include <bits/stdc++.h>
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
const int NMAX=155;
const int TMAX=3501;
int mat[NMAX][TMAX],n,m,K,p,dp[NMAX][TMAX];
vector < pair < int, int > > v[NMAX];
int main(){
int i,j,x,y,z;
f>>n>>m>>K>>p;
for(i=1;i<=m;i++){
f >>x>>y>>z;
v[x].push_back(make_pair(y,z));
v[y].push_back(make_pair(x,z));
}
for(i=1;i<=K;i++){
f >>x>>y>>z;
mat[x][y]+=z;
}
for(i=0;i<=3500;i++)
for(j=0;j<=n;j++)
dp[j][i]=-1;
dp[1][0]=mat[1][0];
for(i=1;i<=3500;i++)
for(j=1;j<=n;j++){
dp[j][i]=dp[j][i-1];
for(auto it:v[j]){
if(i>=it.second)
dp[j][i]=max(dp[j][i],dp[it.first][i-it.second]);
}
if(dp[j][i]!=-1)
dp[j][i]+=mat[j][i];
}
while(p--){
f>>x>>y;
g<<dp[x][y]<<"\n";
}
return 0;
}