Pagini recente » Istoria paginii runda/tsagrigoremoisil/clasament | Statistici Bota Lajea Nania (UCV_BOTA_LAJEA_NANIA) | Cod sursa (job #410069) | Istoria paginii runda/toata_stima_si_respectu1/clasament | Cod sursa (job #1427097)
#include<fstream>
#include<iostream>
#include<vector>
#define pb push_back
using namespace std;
int N,M,K,P,d[3505][155],A[3505][155];
vector<int> v[155];
int C[155][155];
bool viz[3505][155];
int main()
{
ifstream in("amenzi.in");
ofstream out("amenzi.out");
int i,a,b,c,t,tv,n;
vector<int> :: iterator it;
in>>N>>M>>K>>P;
for(i=1;i<=M;++i)
{
in>>a>>b>>c;
v[a].pb(b);
v[b].pb(a);
C[a][b]=C[b][a]=c;
}
for(i=1;i<=K;++i)
{
in>>a>>b>>c;
A[b][a]+=c;
}
viz[0][1]=1;
for(t=0;t<=3500;++t)
for(n=1;n<=N;++n)
{
for(it=v[n].begin();it!=v[n].end();++it)
if(t-C[n][*it]>=0 && viz[t-C[n][*it]][*it])
{
if(d[t][n]<d[t-C[n][*it]][*it]+A[t-C[n][*it]][*it]) d[t][n]=d[t-C[n][*it]][*it]+A[t-C[n][*it]][*it];
viz[t][n]=1;
}
if(t-1>=0 && viz[t-1][n])
if(d[t][n]<d[t-1][n]+A[t-1][n]) d[t][n]=d[t-1][n]+A[t-1][n];
if(viz[t-1][n]) viz[t][n]=1;
}
while(P--)
{
in>>a>>b;
if(viz[b][a])
out<<d[b][a]<<'\n';
else out<<"-1\n";
}
}