Pagini recente » Cod sursa (job #570469) | Cod sursa (job #159743) | Cod sursa (job #2510133) | Cod sursa (job #301076) | Cod sursa (job #996878)
Cod sursa(job #996878)
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
#define NMAX 151
#define TMAX 3501
#define INF 1<<30
#define Pair pair < int , int >
#define y first
#define timp second
int d[TMAX][NMAX],a[NMAX][TMAX];
vector <Pair> v[NMAX];
int main ()
{
int n,m,k,x,yy,c,p,i,j;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
f>>n>>m>>k>>p;
for(i=1;i<=m;i++) {
f>>x>>yy>>c;
v[x].push_back(make_pair(yy,c));
v[yy].push_back(make_pair(x,c));
}
for(i=1;i<=k;i++) {
f>>x>>yy>>c;
a[x][yy]=a[x][yy]+c;
}
for(i=0;i<=TMAX-1;i++)
for(j=2;j<=n;j++)
d[i][j]=-INF;
for(i=1;i<=TMAX-1;i++)
for(j=1;j<=n;j++) {
d[i][j]=d[i-1][j];
for(vector <Pair> :: iterator it=v[j].begin();it!=v[j].end();it++)
if(i-it->timp>=0)
d[i][j]=max(d[i][j],d[i-it->timp][it->y]);
if(d[i][j]!=-INF)
d[i][j]=d[i][j]+a[j][i];
}
for(i=1;i<=p;i++) {
f>>x>>yy;
g<<d[yy][x]<<'\n';
}
f.close();
g.close();
return 0;
}