Pagini recente » Cod sursa (job #52986) | Cod sursa (job #775568) | Cod sursa (job #1624338) | Cod sursa (job #2975479) | Cod sursa (job #1553996)
#include <bits/stdc++.h>
using namespace std;
ifstream in("amenzi.in");
ofstream out("amenzi.out");
vector <pair<int,int> > v[1511];
int dp[3506][160],amd[3506][160];
int main()
{
int N,M,K,P,a,b,c,loc,ora,am;
in>>N>>M>>K>>P;
for(int i=1; i<=M; i++)
{
in>>a>>b>>c;
v[a].push_back({b,c});
v[b].push_back({a,c});
}
for(int i=1; i<=K; i++)
{
in>>loc>>ora>>am;
amd[ora][loc]+=am;
}
for(int i=0; i<=3506; i++)
for(int j=1; j<=N; j++)
dp[i][j]=-1;
dp[0][1]=0;
for(int i=1; i<=3506; i++)
for(int j=1; j<=N; j++)
{
for (int k=0; k<v[j].size(); k++)
{
int timp=v[j][k].second;
int nou=v[j][k].first;
if(i-timp>=0)
dp[i][j]=max(dp[i][j],dp[i-timp][nou]);
}
//sta pe loc
if(dp[i][j]>=0)dp[i][j]+=amd[i][j];
}
for(int i=1; i<=P; i++)
{
in>>a>>b;
out<<dp[b][a]<<'\n';
//a=intersectia a, b=ora b
}
return 0;
}