Pagini recente » Cod sursa (job #1465078) | Cod sursa (job #3232658) | Cod sursa (job #2581516) | Cod sursa (job #1984142) | Cod sursa (job #689517)
Cod sursa(job #689517)
#include <stdio.h>
#define FIN "amenzi.in"
#define FOUT "amenzi.out"
#define nmax 151
int a[nmax][nmax], s[3501][nmax], n, m, k, p, l, cash[3501][nmax], i, j;
int x, y, z;
int
main ()
{
freopen (FIN, "rt", stdin);
freopen (FOUT, "wt", stdout);
scanf ("%d%d%d%d", &n, &m, &k, &p);
for (i = 1; i <= m; i++)
{
scanf ("%d%d%d", &x, &y, &z);
a[x][y] = a[y][x] = z;
}
for (i = 1; i <= n; i++)
s[0][i] = -20000;
for (i = 1; i <= k; i++)
{
scanf ("%d%d%d", &x, &y, &z);
cash[y][x] += z;
}
s[0][1] = 0;
for (i = 0; i < 3501; i++)
for (j = 1; j <= n; j++)
{
if (i > 0)
s[i][j] = s[i-1][j];
for (l = 1; l <= n; l++)
if (a[l][j])
if (i - a[l][j] >= 0 && s[i][j] < s[i-a[l][j]][l])
s[i][j] = s[i-a[l][j]][l];
s[i][j] += cash[i][j];
}
for (i = 1; i <= p; i++)
{
scanf ("%d%d", &x, &y);
if (s[y][x] < 0)
printf ("-1\n");
else
printf ("%d\n", s[y][x]);
}
return 0;
}