Cod sursa(job #1858104)

Utilizator topala.andreiTopala Andrei topala.andrei Data 27 ianuarie 2017 00:29:03
Problema Amenzi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
const int maxn=152;
vector <int>G[maxn],T[maxn];
int dp[maxn][3502],a[maxn][3501];
int N,M,K,P;
int main()
{
    int x,y,z,i,j,k,sz,next,timp;
    f>>N>>M>>K>>P;
    for (i=1;i<=M;i++)
    {
        f>>x>>y>>z;
        G[x].push_back(y);
        T[x].push_back(z);

        G[y].push_back(x);
        T[y].push_back(z);
    }
    for (i=1;i<=N;i++)
    {
        G[i].push_back(i);
        T[i].push_back(1);
    }
    for (i=1;i<=K;i++)
    {
        f>>x>>y>>z;
        a[x][y]+=z;
    }
    memset(dp, -1, sizeof(dp));
    dp[1][0]=0;
    for (i=1;i<=3500;i++)
        for(j=1;j<=N;j++)
        {
            sz=G[j].size();
            for (k=0;k<sz;k++)
            {
                next=G[j][k];
                timp=T[j][k];
                if (i-T[j][k]>=0)
                    dp[j][i]=max(dp[j][i],dp[next][i-timp]);
            }
            if (dp[j][i]!=-1) dp[j][i]+=a[j][i];
        }
    for (i=1;i<=P;i++)
    {
        f>>x>>y;
        g<<dp[x][y]<<"\n";
    }


}