Pagini recente » Cod sursa (job #1361841) | Cod sursa (job #2735686) | Cod sursa (job #1995171) | Cod sursa (job #620449) | Cod sursa (job #12019)
Cod sursa(job #12019)
using namespace std;
#include<fstream>
#include<stdio.h>
#define nmax 155
#define tmax 3505
int cas[nmax][tmax];
int timp[nmax][nmax];
int a[nmax][tmax];
int main()
{
FILE *fin=fopen("amenzi.in","r"),
*fout=fopen("amenzi.out","w");
int n,m,k,p,i,j,t;
int x,y,c;
fscanf(fin,"%d%d%d%d",&n,&m,&k,&p);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
timp[i][j]=4000;
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d%d",&x,&y,&c);
if(c<timp[x][y])
timp[x][y]=timp[y][x]=c;
}
for(i=1;i<=n;i++)
a[i][0]=-1;
memset(cas,0,sizeof cas);
for(i=1;i<=k;i++)
{
fscanf(fin,"%d%d%d",&x,&y,&c);
cas[x][y]+=c;
}
a[1][0]=0;
for(t=1;t<=3500;t++)
for(i=1;i<=n;i++)
{
a[i][t]=a[i][t-1];
for(j=1;j<=n;j++)
if(t>=timp[i][j]&&a[j][t-timp[i][j]]>a[i][t])
a[i][t]=a[j][t-timp[i][j]];
if(a[i][t]>=0)
a[i][t]+=cas[i][t];
}
for(i=1;i<=p;i++)
{
fscanf(fin,"%d%d",&x,&y);
fprintf(fout,"%d\n",a[x][y]);
}
fclose(fin);
fclose(fout);
return 0;
}