Pagini recente » Cod sursa (job #93611) | Cod sursa (job #2487045) | Cod sursa (job #258745) | Cod sursa (job #1558498) | Cod sursa (job #766187)
Cod sursa(job #766187)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int N,M,K,P,A[3510][160];
int nod[2][2000],cost[2000];
int v[3510][160];
int main()
{
ifstream in("amenzi.in");
ofstream out("amenzi.out");
in>>N>>M>>K>>P;
for(int i=1;i<=M;++i)
{
in>>nod[0][i]>>nod[1][i]>>cost[i];
}
for(int i=M+1;i<=N+M;++i)
{
nod[0][i]=nod[1][i]=i-M;
cost[i]=1;
}
M=N+M;
for(int i=1;i<=K;++i)
{
int a,b,c;
in>>a>>b>>c;
v[b][a]+=c;
}
for(int i=0;i<=3501;++i)
{
for(int j=1;j<=N;++j)
{
A[i][j]=-1;
}
}
A[0][1]=0;
for(int i=0;i<=3501;++i)
{
for(int j=1;j<=M;++j)
{
for(int k=0;k<=1;++k)
{
if(i-cost[j]>=0 && 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(int j=1;j<=N;++j)
{
if(A[i][j]>=0) A[i][j]+=v[i][j];
}
}
for(int i=1;i<=P;++i)
{
int a,b;
in>>a>>b;
out<<A[b][a]<<'\n';
}
out.close();
return 0;
}