Cod sursa(job #2593541)

Utilizator robert.barbu27robert barbu robert.barbu27 Data 4 aprilie 2020 10:08:33
Problema Amenzi Scor 100
Compilator cpp-64 Status done
Runda 7 Marime 1.22 kb

#include <bits/stdc++.h>
#define maxn 155
#define maxt 3505
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
int dp[maxt][maxn],m,n,k,p,amenda[maxt][maxn];
vector<pair<int,int> > graph[maxn];
int main()
{
    f>>n>>m>>k>>p;
    for(int i=1; i<=m; i++)
    {
        int a,b,c;
        f>>a>>b>>c;
        graph[a].push_back({b,c});
        graph[b].push_back({a,c});
    }
    for(int i=1; i<=k; i++)
    {
        int a,b,c;
        f>>a>>b>>c;
        amenda[b][a]+=c;

    }
    memset(dp,-1,sizeof dp);
    dp[0][1]=amenda[0][1];
    for(int t=1; t<=3500; t++)
    {
        for(int i=1; i<=n; i++)
        {
            dp[t][i]=dp[t-1][i];
            for(int j=0; j<graph[i].size(); j++)
            {
                int node=graph[i][j].first;
                int timp=graph[i][j].second;
                if(t>=timp)
                {
                    dp[t][i]=max(dp[t][i],dp[t-timp][node]);
                }

            }
            if(dp[t][i]!=-1)
            {
                dp[t][i]+=amenda[t][i];
            }
        }
    }


    for(int i=1; i<=p; i++)
    {
        int a,b;
        f>>a>>b;
        g<<dp[b][a]<<'\n';

    }



}