Pagini recente » Cod sursa (job #2756110) | Cod sursa (job #237735) | Cod sursa (job #1437684) | Cod sursa (job #2760150) | Cod sursa (job #12020)
Cod sursa(job #12020)
using namespace std;
#include<fstream>
#include<stdio.h>
#define nmax 155
#define tmax 3505
int vec[nmax][nmax],nvec[nmax];
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");
memset(nvec,0,sizeof nvec);
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<=m;i++)
{
fscanf(fin,"%d%d%d",&x,&y,&c);
vec[x][++nvec[x]]=y;
vec[y][++nvec[y]]=x;
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<=nvec[i];j++)
if(t>=timp[i][vec[i][j]]&&a[vec[i][j]][t-timp[i][vec[i][j]]]>a[i][t])
a[i][t]=a[vec[i][j]][t-timp[i][vec[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;
}