Cod sursa(job #1892452)

Utilizator marcdariaDaria Marc marcdaria Data 24 februarie 2017 23:07:07
Problema Amenzi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<iostream>
#include<vector>
#include<fstream>
#include<cstring>
#define TMAX 3500
#define NMAX 150
using namespace std;
int n,m,kp,p,t,ticket[TMAX+2][NMAX+2],d[TMAX+2][NMAX+2],i,a,b,c,j;
vector<pair<int,int> > v[NMAX+2];
int main()
{

    ifstream cin("amenzi.in");
    ofstream cout("amenzi.out");
    cin>>n>>m>>kp>>p;
    for(i=1;i<=m;i++)
    {

        cin>>a>>b>>c;
        v[a].push_back(make_pair(b,c));
        v[b].push_back(make_pair(a,c));

    }


    for(i=1;i<=kp;i++)
    {

        cin>>a>>b>>c;
        ticket[b][a]+=c;
    }
    memset(d,-1,sizeof(d));

    d[0][1]=0;
    for(t=1;t<=TMAX;t++)
    {

        for(i=1;i<=n;i++)
        {


            for(j=0;j<v[i].size();j++)
            if(t-v[i][j].second>=0)
                d[t][i]=max(d[t][i],d[t-v[i][j].second][v[i][j].first]);

            if(d[t-1][i]>d[t][i])
                d[t][i]=d[t-1][i];
            if(d[t][i]>=0)
                d[t][i]+=ticket[t][i];
        }


    }


    int nod;
    for(i=1;i<=p;i++){
        cin>>t>>nod;
        cout<<d[nod][t]<<"\n";
    }
    return 0;
}