Cod sursa(job #1999789)

Utilizator refugiatBoni Daniel Stefan refugiat Data 12 iulie 2017 09:49:12
Problema Amenzi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <bits/stdc++.h>
#define TMAX 35005
using namespace std;
ifstream si("amenzi.in");
ofstream so("amenzi.out");
vector<pair<int,int> >v[155];
pair<int,int> q[8005];
int d[155][TMAX],c[155][TMAX];
int main()
{
    int n,m,k,p,x,y,z;
    si>>n>>m>>k>>p;
    for(int i=1;i<=m;++i)
    {
        si>>x>>y>>z;
        v[x].push_back({y,z});
        v[y].push_back({x,z});
    }
    //cout<<1;
    for(int i=1;i<=k;++i)
    {
        si>>x>>y>>z;
        c[x][y]+=z;
    }
    //cout<<1;
    for(int i=1;i<=p;++i)
    {
        si>>x>>y;
        q[i].first=x;
        q[i].second=y;
    }
    //cout<<1;
    memset(d,-1,sizeof(d));

    //cout<<1;
    d[1][0]=0;
    for(int t=1;t<=TMAX;++t)
        for(int nod=1;nod<=n;++nod)
        {
            for(auto it:v[nod])
            {
                if(t-it.second>=0)
                    d[nod][t]=max(d[nod][t],d[it.first][t-it.second]);
            }
            d[nod][t]=max(d[nod][t],d[nod][t-1]);
                if(d[nod][t]>=0) d[nod][t]+=c[nod][t];
        }

    //cout<<1;
    for(int i=1;i<=p;++i)
    {
        so<<d[q[i].first][q[i].second]<<'\n';
    }
    return 0;
}