Cod sursa(job #2593539)

Utilizator robert.barbu27robert barbu robert.barbu27 Data 4 aprilie 2020 10:03:29
Problema Amenzi Scor 0
Compilator cpp-64 Status done
Runda 7 Marime 1.08 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]=0;
for(int t=0;t<=maxt-5;t++)
{

    for(int i=1;i<=n;i++)
    {
        dp[t][i]=max(dp[t][i],dp[t-1][i]);
        if(dp[t][i]==-1) continue;
        else
        {
            for(int j=0;j<=graph[i].size();j++)
            {
                int time=graph[i][j].second;
                int nod=graph[i][j].first;
                if(t+time<=3500){
                dp[t+time][nod]=max(dp[t+time][nod],dp[t][i]+amenda[t+time][nod]);
                }

            }
        }
    }
}


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

}



}