Pagini recente » Cod sursa (job #2074409) | Cod sursa (job #49091) | Cod sursa (job #1336931) | Cod sursa (job #167960) | Cod sursa (job #2768484)
#include <bits/stdc++.h>
#define maxn 154
#define maxt 3504
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
int d[maxt][maxn],m,n,k,p,amenda[maxt][maxn];
vector<pair<int,int> > G[maxn];
int main()
{
f>>n>>m>>k>>p;
for(int i=1; i<=m; i++)
{
int a,b,c;
f>>a>>b>>c;
G[a].push_back({b,c});
G[b].push_back({a,c});
}
for(int i=1; i<=k; i++)
{
int a,b,c;
f>>a>>b>>c;
amenda[b][a]+=c;
}
memset(d,-1,sizeof d);
d[0][1]=amenda[0][1];
for(int t=1; t<=3500; t++)
{
for(int i=1; i<=n; i++)
{
d[t][i]=d[t-1][i];
for(int j=0; j<G[i].size(); j++)
{
int vecin=G[i][j].first;
int timp=G[i][j].second;
if(t>=timp)
{
d[t][i]=max(d[t][i],d[t-timp][vecin]);
}
}
if(d[t][i]!=-1)
{
d[t][i]+=amenda[t][i];
}
}
}
for(int i=1; i<=p; i++)
{
int a,b;
f>>a>>b;
g<<d[b][a]<<'\n';
}
return 0;
}