Pagini recente » Cod sursa (job #1541365) | Cod sursa (job #853465) | Cod sursa (job #2538230) | Cod sursa (job #1803605) | Cod sursa (job #1201756)
#include <fstream>
#include <vector>
#define TMAX 3501
#define DIMN 155
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
vector< pair<int,int> > L[DIMN];
vector< pair<int,int> >::iterator it;
int D[DIMN][TMAX], A[DIMN][TMAX];
int n, m, k, p, x, y, c;
int main () {
f >> n >> m >> k >> p;
for (int i=1; i<=m; ++i) {
f >> x >> y >> c;
L[x].push_back(make_pair(y,c));
L[y].push_back(make_pair(x,c));
}
for (int i=1; i<=k; ++i) {
f >> x >> y >> c;
A[x][y] += c;
}
for (int i=0; i<DIMN; ++i)
for (int j=0; j<TMAX; ++j)
D[i][j] = -1;
D[1][0] = 0;
for (int i=0; i<TMAX; ++i)
for (int j=1; j<=n; ++j) {
if (i>0)
D[j][i] = D[j][i-1];
for (it=L[j].begin(); it!=L[j].end(); it++)
if (i >= it->second)
D[j][i] = max (D[j][i], D[it->first][i - it->second]);
if (D[j][i] != -1)
D[j][i] += A[j][i];
}
for (int i=1; i<=p; ++i) {
f >> x >> y;
g << D[x][y] << "\n";
}
return 0;
}