Pagini recente » Cod sursa (job #333066) | Cod sursa (job #2279558) | Cod sursa (job #2007606) | Cod sursa (job #3154757) | Cod sursa (job #9621)
Cod sursa(job #9621)
#include <stdio.h>
int a[151][151], m[3501][151], u[3501][151],n,h,k,pp, t[151][3501];
int solve(){
int i,j,k,e,timp;
u[0][0]=1; u[0][1]=1;
for(i=0;i<=3500;i++){
for(j=1;j<=n;j++){
if (u[i][j]!=0){
for(k=1;k<=n;k++){
if (a[j][k]!=0){
timp=i+a[j][k];
u[timp][k]=1;
if (m[timp][k]<m[i][j]+t[k][timp]) m[timp][k]=m[i][j]+t[k][timp];
/*if (t[k][timp]!=0){ m[timp][u[timp][0]]=m[i][j]+t[k][timp]; }*/
}
/*
if (a[u[i][j]][k]!=0){ u[i+a[u[i][j]]][0]++;
u[i+a[u[i][j]][u[i+a[u[i][j]][0]]=k;
if(t[k][i]!=0) m[i+a[u][i]][u[i+a[u[i][j]][0]=m[u[i][j]][j]+t[k][i];
}
*/
}
}
}
}
return 0;
}
void read(){
freopen("amenzi.in","r",stdin);
scanf("%d%d%d%d",&n,&h,&k,&pp);
int i,j,d,b,c,exe,maxim;
for(i=1;i<=h;i++){
scanf("%d%d%d",&d,&b,&c);
a[d][b]=c; a[b][d]=c;
}
for(i=1;i<=k;i++){
scanf("%d%d%d",&d,&b,&c);
t[d][b]=c;
}
solve();
for(i=1;i<=pp;i++){
scanf("%d%d",&b,&c);
//exe=0; maxim=0;
//for(j=1;j<=n;j++){
if (u[c][b]!=0) printf("%d\n",m[c][b]);
else printf("-1\n");
// if (maxim<m[c][i]){ maxim=m[c][i]; exe=1; }
//}
//if (exe==1)printf("%d\n",maxim);
//else printf("-1\n");
}
}
int main(){
freopen("amenzi.out","w",stdout);
read();
return 0;
}