Pagini recente » Cod sursa (job #90366) | Cod sursa (job #1808674) | Cod sursa (job #3226467) | Cod sursa (job #1685910) | Cod sursa (job #2348870)
#include <iostream>
#include <fstream>
#include <vector>
#define Nmax 155
#define Tmax 3500
using namespace std;
//FILE* f=fopen("amenzi.in", "r");
ifstream f("amenzi.in");
ofstream g("amenzi.out");
int n, m, k, p;
int amenzi[Nmax][Tmax+10];
int a[Nmax][Tmax+10];
int x, y, c;
vector <pair <int, int> > v[Nmax];
/*
const unsigned maxb=392;
char buf[maxb];
unsigned ptr=maxb;
inline unsigned getInt()
{
unsigned nr=0;
while(buf[ptr]<'0' || '9'<buf[ptr])
if(++ptr>=maxb)
fread(buf,maxb,1,f),ptr=0;
while('0'<=buf[ptr] && buf[ptr]<='9')
{
nr=nr*10+buf[ptr]-'0';
if(++ptr>=maxb)
fread(buf,maxb,1,f),ptr=0;
}
return nr;
}*/
void read()
{
/*n=getInt();
m=getInt();
k=getInt();
p=getInt();*/
f >> n >> m >> k >> p;
for (int i = 1; i <= m; i++)
{
/*x=getInt();
y=getInt();
c=getInt();*/
f >> x >> y >> c;
v[x].push_back({y, c});
v[y].push_back({x, c});
}
for (int i = 1; i <= k; i++)
{
/*x=getInt();
y=getInt();
c=getInt();*/
f >> x >> y >> c;
amenzi[x][y]+=c;
}
}
void build()
{
for (int i = 2; i <= n; i++)
a[i][0]=-1;
for (int j = 1; j <= Tmax; j++)
for (int i = 1; i <= n; i++)
{
a[i][j]=a[i][j-1];
for (int k = 0, l=v[i].size(); k < l; k++)
{
int y=v[i][k].first;
int c=v[i][k].second;
if(j-c>=0 && a[y][j-c] > a[i][j])
a[i][j]=a[y][j-c];
}
if(a[i][j]!=-1) a[i][j]+=amenzi[i][j];
}
}
void print()
{
for (int i = 1; i <= p; i++)
{
/*x=getInt();
y=getInt();*/
f >> x >> y;
//cout << a[x][y] << '\n';
g << a[x][y] << '\n';
}
}
int main()
{
read();
build();
print();
return 0;
}