Pagini recente » Cod sursa (job #549482) | Cod sursa (job #1700006) | Cod sursa (job #2752669) | Cod sursa (job #2190976) | Cod sursa (job #778974)
Cod sursa(job #778974)
#include<fstream>
#include<vector>
#include<cstring>
#define nmax 156
#define tmax 3600
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
vector< pair<int,int > > G[nmax];
int x,y,c,i,j,n,m,k,p,T[tmax][nmax],A[tmax][nmax],Tmax,b,a;
inline int max(int a,int b){
if(a<b)
return b;
return a;
}
int main () {
f>>n>>m>>k>>p;
for(i=1;i<=m;i++){
f>>x>>y>>c;
G[x].push_back(make_pair(y,c));
G[y].push_back(make_pair(x,c));
}
for(i=1;i<=k;++i){
f>>a>>b>>c;
T[b][a]+=c;
}
for(i=2;i<=n;++i)
A[0][i]=-1;
Tmax=tmax;
for(i=1;i<=Tmax;++i) {
for(j=1; j<=n; ++j ) {
A[i][j]=A[i-1][j];
for(int k=0; k<G[j].size() ;++k){
int tt=G[j][k].second;
if(i-tt>=0)
A[i][j]=max(A[i][j] ,A[i-tt][G[j][k].first]);
}
if(A[i][j]!=-1 )
A[i][j]+=T[i][j];
}
}
for(i=1;i<=p;++i){
f>>a>>b;
g<<A[b][a]<<"\n";
}
return 0;
}