Pagini recente » Cod sursa (job #491113) | Cod sursa (job #1622244) | Cod sursa (job #477924) | Cod sursa (job #2307841) | Cod sursa (job #3147427)
using namespace std;
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
ifstream fin("amenzi.in");
ofstream fout("amenzi.out");
int n, m, k, p;
vector< vector<pair<int,int>>> muchii;
int amenzi[151][3501];
int dp[151][3501];
int main() {
fin >> n >> m >> k >> p;
muchii.resize(n+1);
for (int i = 1; i<=m; i++) {
int a, b, c;
fin >> a >> b >> c;
muchii[a].push_back({b, c});
muchii[b].push_back({a, c});
}
for (int i = 1; i<=k; i++) {
int a, b, c;
fin >> a >> b >> c;
amenzi[a][b] += c;
}
for (int i = 1; i<=n; i++) {
for (int j = 0; j<=3500; j++) {
dp[i][j] = -1;
}
}
dp[1][0] = amenzi[1][0];
for (int t = 1; t<=3500; t++) {
for (int i = 1; i<=n; i++) {
for (int x = 0; x<muchii[i].size(); x++) {
pair<int,int> nod = muchii[i][x];
if (t-nod.second >= 0) {
dp[i][t] = max(dp[i][t], dp[nod.first][t-nod.second]);
}
}
dp[i][t] = max(dp[i][t], dp[i][t-1]);
if (dp[i][t] >= 0) {
dp[i][t] += amenzi[i][t];
}
}
}
for (int i = 1; i<=p; i++) {
int a, b;
fin >> a >> b;
fout << dp[a][b] << "\n";
}
return 0;
}