Cod sursa(job #16891)

Utilizator diaDiana Adrisor dia Data 14 februarie 2007 14:27:48
Problema Amenzi Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <stdio.h>
#define TMAX 3555
#define NMAX 155

int A[NMAX][NMAX], G[NMAX], D[TMAX][NMAX], Am[TMAX][NMAX], T[NMAX][NMAX];
int N, M, K, P;

int max(int a, int b)
{
        return ((a) > (b) ? (a):(b));
}

int main()
{
        int a, b, c, i, j, k, fiu;

        freopen("amenzi.in", "r", stdin);
        scanf("%d %d %d %d", &N, &M, &K, &P);

        for (i = 0; i < M; i++)
        {
                scanf("%d %d %d", &a, &b, &c);
                A[a][ G[a] ] = b; T[a][ G[a]++ ] = c;
                A[b][ G[b] ] = a; T[b][ G[b]++ ] = c;
        }

        for (i = 0; i < K; i++)
        {
                scanf("%d %d %d", &a, &b, &c);
                Am[b][a] += c;
        }


        for (j = 1; j <= N; j++)
            for (i = 0; i < TMAX; i++)
            {
                D[i][j] += Am[i][j];
                for (k = 0; k < G[j]; k++)
                {
                    fiu = A[j][k];
                    D[i+T[j][fiu]][fiu] = max(D[i][j], max(D[i+T[j][fiu]][fiu], D[i+T[j][fiu]-1][fiu]));
                }
            }

        freopen("amenzi.out", "w", stdout);
        while (P--)
        {
                scanf("%d %d", &a, &b);
                printf("%d\n", D[b][a]);
        }

        return 0;

}