Pagini recente » Cod sursa (job #2235631) | Cod sursa (job #340757) | Cod sursa (job #1551128) | Cod sursa (job #557730) | Cod sursa (job #878375)
Cod sursa(job #878375)
#include <fstream>
#include <vector>
#define nmax 151
#define tmax 3501
using namespace std;
ifstream f("amenzi.in");
ofstream g("amenzi.out");
vector < pair <int, int> > vec[151];
int a[tmax][nmax],d[tmax][nmax];
int n,m,k,p;
int main()
{
f>>n>>m>>k>>p;
int i,j,x,y,c;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
vec[x].push_back(make_pair(y,c));
vec[y].push_back(make_pair(x,c));
}
for(i=1;i<=k;i++)
{
f>>x>>y>>c;
a[y][x]+=c;
}
for(i=0;i<tmax;i++)
for(j=1;j<=n;j++) d[i][j]=-1;
d[0][1]=a[0][1];
for(i=1;i<tmax;i++)
{
for(j=1; j<=n ;j++)
{
if(d[i-1][j]>d[i][j]) d[i][j]=d[i-1][j];
for(k=0;k<vec[j].size();k++)
{
x=vec[j][k].first;
y=vec[j][k].second;
if( i-y>=0 && d[i-y][x]>d[i][j])
{
d[i][j]=d[i-y][x];
}
}
if(d[i][j]!=-1) d[i][j]+=a[i][j];
}
}
for(i=1;i<=p;i++)
{
f>>x>>y;
g<<d[y][x]<<'\n';
}
}