Pagini recente » Cod sursa (job #2735255) | Cod sursa (job #2632250) | Cod sursa (job #522619) | Cod sursa (job #479064) | Cod sursa (job #1427080)
#include<fstream>
#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)
if(viz[t][n])
{
for(it=v[n].begin();it!=v[n].end();++it)
{
tv=t+C[n][*it];
if(tv<=3500)
{viz[tv][*it]=1;
d[tv][*it]=d[tv][*it]>d[t][n]+A[tv][*it]? d[tv][*it] : d[t][n]+A[tv][*it];}
tv=t+1;
if(tv<=3500)
{viz[tv][*it]=1;
d[tv][*it]=d[tv][*it]>d[t][n]+A[tv][*it]? d[tv][*it] : d[t][n]+A[tv][*it];}
}
}
while(P--)
{
in>>a>>b;
if(viz[b][a])
out<<d[b][a]<<'\n';
else out<<'-1';
}
}