Pagini recente » Cod sursa (job #1148008) | Cod sursa (job #212601) | Cod sursa (job #3218807) | Cod sursa (job #1230775) | Cod sursa (job #2513941)
#include <bits/stdc++.h>
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
const int NMAX = 155;
const int PMAX = 8005;
const int KMAX = 12005;
const int TMAX = 3505;
int n,m,K,p;
long long mat[NMAX][TMAX], 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;
}
memset(dp, -1, sizeof(dp));
dp[1][0] = mat[1][0];
for(i = 1 ; i < TMAX ; 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;
}