Cod sursa(job #3220933)

Utilizator Darius1414Dobre Darius Adrian Darius1414 Data 5 aprilie 2024 12:37:34
Problema Amenzi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#define nmx 155
#define tmx 3505
using namespace std;
int n,m,a,b,c,k,p,dp[nmx][tmx],ban[nmx][tmx];
vector <pair<int,int>> v[nmx];
int main()
{
    ifstream f ("amenzi.in");
    ofstream g ("amenzi.out");
    f>>n>>m>>k>>p;
    for (int i=1; i<=m; i++)
    {
        f>>a>>b>>c;
        v[a].push_back({b,c});
        v[b].push_back({a,c});
    }
    for (int i=1; i<=k; i++)
    {
        f>>a>>b>>c;
        ban[a][b]+=c;
    }
    for (int i=1; i<=n; i++)
        for (int j=0; j<tmx; j++)
            dp[i][j]=-1;
    dp[1][0]=0;
    for (int t=1; t<tmx; t++)
        for (int i=1; i<=n; i++)
        {
            dp[i][t]=dp[i][t-1];
            for (auto it : v[i])
                if (t>=it.second)
                    dp[i][t]=max(dp[i][t],dp[it.first][t-it.second]);
            if (dp[i][t]!=-1)
                dp[i][t]+=ban[i][t];
        }
    for (int i=1; i<=p; i++)
    {
        f>>a>>b;
        g<<dp[a][b]<<'\n';
    }
}