Pagini recente » Cod sursa (job #1877389) | Cod sursa (job #1374093) | Cod sursa (job #2072888) | Cod sursa (job #972158) | Cod sursa (job #1496330)
# 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[155][3505];
int dp[155][3505];
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});
}
memset(dp,-1,sizeof(dp));
dp[1][0] = v[1][0];
while (k --)
{
int a,b,c;
fi>>a>>b>>c;
v[a][b] += c;
}
for (int k = 1;k <= 3500;++k)
{
for (int i = 1;i <= n;++i)
{
dp[i][k] = dp[i][k-1];
for (auto it : s[i])
if (k >= it.y)
dp[i][k] = max(dp[i][k],dp[it.x][k-it.y]);
if (dp[i][k] != -1) dp[i][k] += v[i][k];
}
}
while (p --)
{
int a,b;
fi>>a>>b;
fo << dp[a][b] << '\n';
}
return 0;
}