Cod sursa(job #2619352)

Utilizator eusebiu_alexandruMorar Eusebiu eusebiu_alexandru Data 27 mai 2020 15:30:57
Problema Amenzi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <bits/stdc++.h>
	
 
	
using namespace std;
	
 
	
ifstream f("amenzi.in");
	
ofstream g("amenzi.out");
	
 
	
const int NMAX = 155;
	
const int TMAX = 3505;
	
int dp[TMAX][NMAX],val[TMAX][NMAX];
	
vector < pair < int, int > > v[NMAX];
	
 
	
int main()
	
{
	
    int n,m,k,p;
	
    f >> n >> m >> k >> p;
	
    for(int i = 1 ; i <= m ; i++)
	
    {
	
        int x,y,z;
	
        f >> x >> y >> z;
	
        v[x].push_back({y,z});
	
        v[y].push_back({x,z});
	
    }
	
    for(int i = 1 ; i <= k ; i++)
	
    {
	
        int x,y,z;
	
        f >> x >> y >> z;
	
        val[y][x] += z;
	
    }
	
    for(int i = 0 ; i <= 3500 ; i++)
	
        for(int j = 0 ; j <= n ; j++)
	
            dp[i][j] = -1;
	
    dp[0][1] = val[0][1];
	
    for(int i = 1 ; i <= 3500 ; i++)
	
        for(int j = 1 ; j <= n ; j++)
	
        {
	
            dp[i][j] = dp[i - 1][j];
	
            for(auto it: v[j])
	
            {
	
                int next = it.first, c = it.second;
	
                if(i >= c)
	
                    dp[i][j]= max(dp[i][j], dp[i - c][next]);
	
            }
	
            if(dp[i][j] != -1)
	
                dp[i][j] += val[i][j];
	
        }
	
 
	
    for(int i = 1 ; i <= p ; i++)
	
    {
	
        int x,y;
	
        f >> x >> y;
	
        g << dp[y][x] << "\n";
	
    }
	
 
	
    return 0;
	
}