Cod sursa(job #2513967)

Utilizator bluestorm57Vasile T bluestorm57 Data 24 decembrie 2019 11:44:07
Problema Amenzi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
const int NMAX = 155;
const int TMAX = 3501;
int mat[NMAX][TMAX],n,m,K,p,dp[NMAX][TMAX];
vector < pair < int, int > > v[NMAX];
int main(){
    ios::sync_with_stdio(0);
    f.tie(0);
    g.tie(0);
    int i,j,x,y,z;
    f >> n >> m >> K >> p;
    for(i = 1 ; i <= m ; i++){
        f >> x >> y >> z;
        v[x].push_back(make_pair(y,z));
        v[y].push_back(make_pair(x,z));
    }
    for(i = 1 ; i <= K ; i++){
        f >> x >> y >> z;
        mat[x][y] += z;
    }
    for(i = 0 ; i < TMAX ; i++)
        for(j = 0 ; j <= n ; j++)
            dp[j][i] = -1;
    dp[1][0] = mat[1][0];
    for(i = 1 ; i < TMAX ; i++)
        for(j = 1 ; j <= n ; j++){
            dp[j][i] = dp[j][i - 1];
            for(auto it: v[j]){
                if(i >= it.second)
                    dp[j][i] = max(dp[j][i], dp[it.first][i - it.second]);
            }
            if(dp[j][i] != -1)
                dp[j][i] += mat[j][i];
        }
    while(p--){
        f >> x >> y;
        g << dp[x][y] << "\n";
    }
    return 0;
}