Pagini recente » Cod sursa (job #177383) | Cod sursa (job #990736) | Cod sursa (job #2590917) | Cod sursa (job #546631) | Cod sursa (job #1858102)
#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";
}
}