Pagini recente » Cod sursa (job #2971134) | Cod sursa (job #279652) | Cod sursa (job #1569859) | Cod sursa (job #1353035) | Cod sursa (job #1099131)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("amenzi.in");
ofstream fout("amenzi.out");
const int nmax= 150;
const int tmax= 3500;
struct str {
int x, y;
};
vector <str> v[nmax+1];
inline str mp( int x, int y ) {
str sol;
sol.x= x, sol.y= y;
return sol;
}
int c[tmax+1][nmax+1], d[tmax+1][nmax+1];
int main( ) {
int n, m, k, p;
fin>>n>>m>>k>>p;
for ( ; m; --m ) {
int x, y, z;
fin>>x>>y>>z;
v[x].push_back( mp( y, z ) );
v[y].push_back( mp( x, z ) );
}
for ( ; k; --k ) {
int y, x, z;
fin>>y>>x>>z;
c[x][y]+= z;
}
d[0][1]= 1;
for ( int i= 1; i<tmax; ++i ) {
for ( int j= 1; j<=n; ++j ) {
d[i][j]= d[i-1][j];
for ( int k= 0; k<(int)v[j].size(); ++k ) {
if ( v[j][k].y<=i && d[i][j]<d[i-v[j][k].y][v[j][k].x] ) {
d[i][j]= d[i-v[j][k].y][v[j][k].x];
}
}
if ( d[i][j]>0 ) {
d[i][j]+= c[i][j];
}
}
}
for ( ; p; --p ) {
int y, x;
fin>>y>>x;
fout<<d[x][y]-1<<"\n";
}
return 0;
}