Pagini recente » Cod sursa (job #1784027) | Cod sursa (job #1091048) | Cod sursa (job #728873) | Cod sursa (job #2688874) | Cod sursa (job #3201115)
#include <bits/stdc++.h>
using namespace std;
const long long max_size = 152, max_t = 35e2 + 20;
long long dp[max_size][max_t], amenzi[max_size][max_t];
vector <pair <long long, long long>> mc[max_size];
void solve ()
{
long long n, m, k, q;
cin >> n >> m >> k >> q;
while (m--)
{
long long x, y, c;
cin >> x >> y >> c;
mc[x].push_back({y, c});
mc[y].push_back({x, c});
}
while (k--)
{
long long x, y, c;
cin >> x >> y >> c;
amenzi[x][y] += c;
}
for (long long i = 2; i <= n; i++)
{
dp[i][0] = -1;
}
for (long long t = 1; t < max_t; t++)
{
for (long long i = 1; i <= n; i++)
{
dp[i][t] = dp[i][t - 1];
for (auto f : mc[i])
{
if (f.second > t)
{
continue;
}
dp[i][t] = max(dp[i][t], dp[f.first][t - f.second]);
}
if (dp[i][t] != -1)
{
dp[i][t] += amenzi[i][t];
}
}
}
while (q--)
{
long long x, y;
cin >> x >> y;
cout << dp[x][y] << '\n';
}
cout << '\n';
}
signed main ()
{
#ifdef LOCAL
freopen("test.in", "r", stdin);
freopen("test.out", "w", stdout);
#else
freopen("amenzi.in", "r", stdin);
freopen("amenzi.out", "w", stdout);
#endif // LOCAL
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
long long t;
//cin >> t;
t = 1;
while (t--)
{
solve();
}
return 0;
}