Pagini recente » Cod sursa (job #2276037) | Cod sursa (job #1587657) | Cod sursa (job #2357742) | Cod sursa (job #2666625) | Cod sursa (job #10750)
Cod sursa(job #10750)
#include <stdio.h>
#define MAX(a, b) ( (a) < (b) ? (b) : (a) )
#define NMAX 152
#define TMAX 3502
#define INF 1000000001
int V[NMAX][NMAX];
int A[TMAX][NMAX];
int Amenda[TMAX][NMAX];
int i, j, N, M, K, P;
int x, y, z, cost, t, k, Tm;
int oras, time;
int main()
{
freopen("amenzi.in", "r", stdin);
freopen("amenzi.out", "w", stdout);
scanf("%d %d %d %d", &N, &M, &K, &P);
//for (i = 0; i <= N; i++)
//for (j = 0; j <= N; j++) V[i][j] = -INF;
for (i = 1; i <= M; i++)
{
scanf("%d %d %d", &x, &y, &z);
V[x][y] = z;
V[y][x] = z;
}
for (i = 1; i <= K; i++)
{
scanf("%d %d %d", &x, &y, &z);
Amenda[y][x] += z;
}
for(t = 0; t <= TMAX - 1; t++)
for(i = 0; i <= N; i++) A[t][i] = -INF;
A[0][1] = 0;
for (t = 0; t <= TMAX - 1; t++)
{
for (j = 1; j <= N; j++)
for (i = 1; i <= N; i++)
if (V[j][i]>0)
{
cost = V[j][i];
if (t-cost >= 0 && (A[t-cost][j] >= 0 || A[t-1][i] >= 0))
A[t][i] = MAX ( MAX (A[t-cost][j], A[t-1][i]) + Amenda[t][i], A[t][i]);
}
}
for (i = 1; i <= P; i++)
{
scanf("%d %d", &oras, &time);
printf("%d\n", A[time][oras]);
}
return 0;
}