Cod sursa(job #2513969)

Utilizator bluestorm57Vasile T bluestorm57 Data 24 decembrie 2019 11:47:10
Problema Amenzi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 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(){
    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<=3500;i++)
        for(j=0;j<=n;j++)
            dp[j][i]=-1;
    dp[1][0]=mat[1][0];
    for(i=1;i<=3500;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;
}