Cod sursa(job #1804760)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 12 noiembrie 2016 22:29:57
Problema Amenzi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
int N,M,K,P,i,j,k,a,b,c,A[3510][160],nod[2][2000],cost[2000],v[3510][160];
int main()
{
    f>>N>>M>>K>>P;
    for(i=1;i<=M;++i)
        f>>nod[0][i]>>nod[1][i]>>cost[i];
    for(i=M+1;i<=N+M;++i)
    {
        nod[0][i]=nod[1][i]=i-M;
        cost[i]=1;
    }
    M=N+M;
    for(i=1;i<=K;++i)
    {
        f>>a>>b>>c;
        v[b][a]+=c;
    }
    memset(A,-1,sizeof A);
    A[0][1]=0;
    for(i=0;i<=3501;++i)
    {
        for(j=1;j<=M;++j)
            for(k=0;k<=1;++k)
                if(i>=cost[j]&&A[i-cost[j]][nod[!k][j]]!=-1)
                    A[i][nod[k][j]]=max(A[i][nod[k][j]],A[i-cost[j]][nod[!k][j]]);
        for(j=1;j<=N;++j)
            if(A[i][j]>=0) A[i][j]+=v[i][j];
    }
    while(P--)
    {
        f>>a>>b;
        g<<A[b][a]<<'\n';
    }
    return 0;
}