Cod sursa(job #2285768)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 19 noiembrie 2018 11:06:28
Problema Amenzi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
#define x first
#define y second

using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
vector < pair < int , int > > s[222];
int v[3505][155];
int d[3505][155];
int main(void)
{
    int n,m,p,k;
    f>>n>>m>>k>>p;
    while(m--)
    {
        int a,b,c;
        f>>a>>b>>c;
        s[a].push_back({b,c});
        s[b].push_back({a,c});
    }
    for(int i=0;i<=3500;++i)
        for(int j=1;j<=n;++j)
            d[i][j]=-1;
    while(k--)
    {
        int a,b,c;
        f>>a>>b>>c;
        v[b][a]+=c;
    }
    d[0][1]=v[0][1];
    for(int k=1;k<=3500;++k)
    {
        for(int i=1;i<=n;++i)
        {
            d[k][i]=d[k-1][i];
            for(auto it:s[i])
                if(k>=it.y)
                    d[k][i]=max(d[k][i],d[k-it.y][it.x]);
            if(d[k][i]!=-1)d[k][i]+=v[k][i];
        }
    }
    while(p --)
    {
        int a,b;
        f>>a>>b;
        g<<d[b][a]<<'\n';
    }
    return 0;
}