Pagini recente » Cod sursa (job #2482108) | Cod sursa (job #507206) | Cod sursa (job #1016615) | Cod sursa (job #2939136) | Cod sursa (job #995217)
Cod sursa(job #995217)
#include <fstream>
using namespace std;
struct nod
{
int urm,cost;
};
typedef nod muchii1;
nod mc[155][1505];
int n,m,k,p,a,b,c,num[155];
int infr[155][3505],rs[155][3505];
int main ()
{
ifstream in ("amenzi.in");
in>>n>>m>>k>>p;
for (int i=1;i<=m;++i)
{
in>>a>>b>>c;
++num[a]; mc[a][num[a]].urm=b; mc[a][num[a]].cost=c;
++num[b]; mc[b][num[b]].urm=a; mc[b][num[b]].cost=c;
}
for (int i=1;i<=k;++i)
{
in>>a>>b>>c;
infr[a][b]+=c;
}
rs[1][0]=1;
for (int i=1;i<=3500;++i)
{
for (int j=1;j<=n;++j)
{
rs[j][i]=rs[j][i-1];
for (int z=1;z<=num[j];++z)
if (i>=mc[j][z].cost)
if (rs[mc[j][z].urm][i-mc[j][z].cost]>rs[j][i]) rs[j][i]=rs[mc[j][z].urm][i-mc[j][z].cost];
if (rs[j][i]>0) rs[j][i]+=infr[j][i];
}
}
ofstream out ("amenzi.out");
for (int i=1;i<=p;++i)
{
in>>a>>b;
out<<rs[a][b]-1<<"\n";
}
in.close();
out.close();
}