Pagini recente » Cod sursa (job #3254335) | Cod sursa (job #2686457) | Cod sursa (job #1715017) | Cod sursa (job #2398881) | Cod sursa (job #2262985)
#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
vector<pair<int,int> >v[160];
int m,n,k,amenzi[3512][162],x,y,z,a[3512][162],q,i,j,cost,prec,p;
int main(void)
{
f>>n>>m>>k>>q;
for(i=1;i<=m;i++)
{
f>>x>>y>>z;
v[x].push_back(make_pair(y,z));
v[y].push_back(make_pair(x,z));
}
for(i=1;i<=k;i++)
{
f>>x>>y>>z;
amenzi[y][x]+=z;
}
for(i=0;i<=3511;i++)
for(j=0;j<=n;j++)
a[i][j]=-1;
a[0][1]=amenzi[0][1];
for(i=1;i<=3506;i++)
for(j=1;j<=n;j++)
{
for(p=0;p<v[j].size();p++)
{
prec=v[j][p].first;
cost=v[j][p].second;
if(i>=cost)
a[i][j]=max(a[i][j],a[i-cost][prec]);
}
a[i][j]=max(a[i-1][j],a[i][j]);
if(a[i][j]!=-1)
a[i][j]+=amenzi[i][j];
}
for(i=1;i<=q;i++)
{
f>>x>>y;
g<<a[y][x]<<"\n";
}
f.close(); g.close();
return 0;
}