Pagini recente » Cod sursa (job #534125) | Cod sursa (job #757542) | Cod sursa (job #443938) | Rating albu razvan (tmyo1000) | Cod sursa (job #791502)
Cod sursa(job #791502)
#include<fstream>
#include<vector>
#include<cmath>
using namespace std;
int n,m,K,Q;
vector < pair<int,int> > G[160];
int best[160][3510],amenda[160][3510];
int main()
{
int i,j,k,x,y,c;
ifstream fin("amenzi.in");
ofstream fout("amenzi.out");
fin>>n>>m>>K>>Q;
for(i=1;i<=m;i++)
{
fin>>x>>y>>c;
G[x].push_back(make_pair(y,c));
G[y].push_back(make_pair(x,c));
}
for(i=1;i<=K;i++)
{
fin>>x>>y>>c;
amenda[x][y]+=c;
}
for(i=1;i<=n;i++)
best[i][0]=-1;
best[1][0]=amenda[1][0];
for(i=1;i<=3505;i++)
{
for(j=1;j<=n;j++)
{
best[j][i]=-1;
for(k=G[j].size()-1;k>=0;k--)
{
x=G[j][k].first;
c=G[j][k].second;
if(i>=c)
best[j][i]=max(best[j][i],best[x][i-c]);
}
best[j][i]=max(best[j][i],best[j][i-1]);
if(best[j][i]>=0)
best[j][i]+=amenda[j][i];
}
}
for(i=1;i<=Q;i++)
{
fin>>x>>y;
fout<<best[x][y]<<"\n";
}
fin.close();
fout.close();
return 0;
}