Pagini recente » Cod sursa (job #2519732) | Cod sursa (job #662566) | Cod sursa (job #1470450) | Cod sursa (job #1526374) | Cod sursa (job #1735321)
#include<iostream>
#include<vector>
#include<fstream>
#include<cstring>
#define TMAX 3500
#define NMAX 150
using namespace std;
int n,m,kp,p,t,ticket[TMAX+2][NMAX+2],d[TMAX+2][NMAX+2],i,a,b,c,j;
vector<pair<int,int> > v[NMAX+2];
int main()
{
ifstream cin("amenzi.in");
ofstream cout("amenzi.out");
cin>>n>>m>>kp>>p;
for(i=1;i<=m;i++)
{
cin>>a>>b>>c;
v[a].push_back(make_pair(b,c));
v[b].push_back(make_pair(a,c));
}
for(i=1;i<=kp;i++)
{
cin>>a>>b>>c;
ticket[b][a]+=c;
}
memset(d,-1,sizeof(d));
d[0][1]=0;
for(t=1;t<=TMAX;t++)
{
for(i=1;i<=n;i++)
{
for(j=0;j<v[i].size();j++)
if(t-v[i][j].second>=0)
d[t][i]=max(d[t][i],d[t-v[i][j].second][v[i][j].first]);
if(d[t-1][i]>d[t][i])
d[t][i]=d[t-1][i];
if(d[t][i]>=0)
d[t][i]+=ticket[t][i];
}
}
int nod;
for(i=1;i<=p;i++){
cin>>t>>nod;
cout<<d[nod][t]<<"\n";
}
return 0;
}