Pagini recente » Cod sursa (job #1113521) | Cod sursa (job #15672) | Cod sursa (job #1561798) | Cod sursa (job #1859993) | Cod sursa (job #1496334)
# include <bits/stdc++.h>
# define x first
# define y second
using namespace std;
ifstream fi("amenzi.in");
ofstream fo("amenzi.out");
vector < pair < int , int > > s[222];
int v[3505][155];
int dp[3505][155];
int main(void)
{
int n,m,p,k;
fi>>n>>m>>k>>p;
while (m --)
{
int a,b,c;
fi>>a>>b>>c;
s[a].push_back({b,c});
s[b].push_back({a,c});
}
for (int i = 0;i <= 3500;++i)
for (int j = 1;j <= n;++j)
dp[i][j] = -1;
while (k --)
{
int a,b,c;
fi>>a>>b>>c;
v[b][a] += c;
}
dp[0][1] = v[0][1];
for (int k = 1;k <= 3500;++k)
{
for (int i = 1;i <= n;++i)
{
dp[k][i] = dp[k-1][i];
for (auto it : s[i])
if (k >= it.y)
dp[k][i] = max(dp[k][i],dp[k-it.y][it.x]);
if (dp[k][i] != -1) dp[k][i] += v[k][i];
}
}
while (p --)
{
int a,b;
fi>>a>>b;
fo << dp[b][a] << '\n';
}
return 0;
}