Pagini recente » Cod sursa (job #2548745) | Cod sursa (job #1748839) | Cod sursa (job #555760) | Cod sursa (job #1936140) | Cod sursa (job #2285768)
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
vector < pair < int , int > > s[222];
int v[3505][155];
int d[3505][155];
int main(void)
{
int n,m,p,k;
f>>n>>m>>k>>p;
while(m--)
{
int a,b,c;
f>>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)
d[i][j]=-1;
while(k--)
{
int a,b,c;
f>>a>>b>>c;
v[b][a]+=c;
}
d[0][1]=v[0][1];
for(int k=1;k<=3500;++k)
{
for(int i=1;i<=n;++i)
{
d[k][i]=d[k-1][i];
for(auto it:s[i])
if(k>=it.y)
d[k][i]=max(d[k][i],d[k-it.y][it.x]);
if(d[k][i]!=-1)d[k][i]+=v[k][i];
}
}
while(p --)
{
int a,b;
f>>a>>b;
g<<d[b][a]<<'\n';
}
return 0;
}