Cod sursa(job #2007851)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 4 august 2017 12:14:08
Problema Amenzi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
vector<pair<int,int> >v[160];
int m,n,k,amenzi[3512][162],x,y,z,a[3512][162],q,i,j,cost,prec,p;
int main(void)
{
    f>>n>>m>>k>>q;
    for(i=1;i<=m;i++)
    {
        f>>x>>y>>z;
        v[x].push_back(make_pair(y,z));
        v[y].push_back(make_pair(x,z));
    }
    for(i=1;i<=k;i++)
    {
        f>>x>>y>>z;
        amenzi[y][x]+=z;
    }
    for(i=0;i<=3511;i++)
      for(j=0;j<=n;j++)
        a[i][j]=-1;
    a[0][1]=amenzi[0][1];
    for(i=1;i<=3506;i++)
      for(j=1;j<=n;j++)
      {
          for(p=0;p<v[j].size();p++)
          {
              prec=v[j][p].first;
              cost=v[j][p].second;
              if(i>=cost)
                a[i][j]=max(a[i][j],a[i-cost][prec]);
          }
          a[i][j]=max(a[i-1][j],a[i][j]);
          if(a[i][j]!=-1)
            a[i][j]+=amenzi[i][j];
      }
    for(i=1;i<=q;i++)
    {
        f>>x>>y;
        g<<a[y][x]<<"\n";
    }
    f.close(); g.close();
    return 0;
}