Cod sursa(job #2718532)

Utilizator Andy_ANDYSlatinaru Andrei Alexandru Andy_ANDY Data 8 martie 2021 19:47:26
Problema Amenzi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream cin("amenzi.in");
ofstream cout("amenzi.out");

vector <pair<int,int>> v[155];
int n,m,k,p,x,y,c,a[3505][155],d[3505][155],nodd,t;

int main()
{
    cin>>n>>m>>k>>p;
    for(int i=1;i<=m;i++){
        cin>>x>>y>>c;
        v[x].push_back({y,c});
        v[y].push_back({x,c});
    }
    for(int i=1;i<=k;i++){
        cin>>x>>y>>c;
        a[y][x]+=c;
    }
    for(int i=0;i<=3501;i++){
        for(int j=0;j<=n;j++){
            d[i][j]=-1;
        }
    }
    d[0][1]=0;
    for(int i=1;i<=3501;i++){
        for(int j=1;j<=n;j++){
            d[i][j]=d[i-1][j];
            for(auto x: v[j]){
                if(i-x.second>=0)
                    d[i][j]=max(d[i][j],d[i-x.second][x.first]);
            }
            if(d[i][j]>=0)
                d[i][j]+=a[i][j];
        }
    }
    while(p--){
        cin>>nodd>>t;
        cout<<d[t][nodd]<<'\n';
    }
    return 0;
}