Pagini recente » Cod sursa (job #3141930) | Cod sursa (job #1094727) | Cod sursa (job #27033) | Cod sursa (job #2070052) | Cod sursa (job #3220933)
#include <iostream>
#include <fstream>
#include <vector>
#define nmx 155
#define tmx 3505
using namespace std;
int n,m,a,b,c,k,p,dp[nmx][tmx],ban[nmx][tmx];
vector <pair<int,int>> v[nmx];
int main()
{
ifstream f ("amenzi.in");
ofstream g ("amenzi.out");
f>>n>>m>>k>>p;
for (int i=1; i<=m; i++)
{
f>>a>>b>>c;
v[a].push_back({b,c});
v[b].push_back({a,c});
}
for (int i=1; i<=k; i++)
{
f>>a>>b>>c;
ban[a][b]+=c;
}
for (int i=1; i<=n; i++)
for (int j=0; j<tmx; j++)
dp[i][j]=-1;
dp[1][0]=0;
for (int t=1; t<tmx; t++)
for (int i=1; i<=n; i++)
{
dp[i][t]=dp[i][t-1];
for (auto it : v[i])
if (t>=it.second)
dp[i][t]=max(dp[i][t],dp[it.first][t-it.second]);
if (dp[i][t]!=-1)
dp[i][t]+=ban[i][t];
}
for (int i=1; i<=p; i++)
{
f>>a>>b;
g<<dp[a][b]<<'\n';
}
}