Cod sursa(job #2768484)

Utilizator gruhtenZinnenberg Gruhten gruhten Data 10 august 2021 23:40:29
Problema Amenzi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>

#define maxn 154
#define maxt 3504
using namespace std;

ifstream f("amenzi.in");
ofstream g("amenzi.out");

int d[maxt][maxn],m,n,k,p,amenda[maxt][maxn];
vector<pair<int,int> > G[maxn];

int main()
{
    f>>n>>m>>k>>p;

    for(int i=1; i<=m; i++)
    {
        int a,b,c;

        f>>a>>b>>c;

        G[a].push_back({b,c});
        G[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(d,-1,sizeof d);

    d[0][1]=amenda[0][1];

    for(int t=1; t<=3500; t++)
    {
        for(int i=1; i<=n; i++)
        {
            d[t][i]=d[t-1][i];

            for(int j=0; j<G[i].size(); j++)
            {
                int vecin=G[i][j].first;

                int timp=G[i][j].second;

                if(t>=timp)
                {
                    d[t][i]=max(d[t][i],d[t-timp][vecin]);
                }
            }

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

    for(int i=1; i<=p; i++)
    {
        int a,b;
        f>>a>>b;

        g<<d[b][a]<<'\n';
    }

    return 0;
}