Pagini recente » Cod sursa (job #172282) | Cod sursa (job #1538417) | Cod sursa (job #1457428) | Cod sursa (job #360904) | Cod sursa (job #2227036)
#include <bits/stdc++.h>
#define N 155
#define K 12005
#define T 3505
using namespace std;
ifstream fin("amenzi.in") ;
ofstream fout("amenzi.out") ;
int hotz[T][N] , dp[T][N] ;
vector<pair<int,int> > graf[N] ;
int n , m , k , p ;
void citire()
{
int i ,x,y,c;
fin >> n >> m >> k >> p ;
for ( i = 1 ; i <= m ; i++ )
{
fin >> x >> y >> c ;
graf[x].push_back(make_pair(y,c)) ;
graf[y].push_back(make_pair(x,c)) ;
}
for ( i = 1 ; i <= k ; i++ )
{
fin >> x >> y >> c ;
hotz[y][x] += c ;
}
}
int main()
{
int i , j , x , y ;
citire() ;
for ( i = 0 ; i <= T ; i++ )
for ( j = 1 ; j <= n ; j++ )
dp[i][j] = -1 ;
dp[0][1] = hotz[0][1] ;
for ( i = 1 ; i <= T ; i++ )
{
for ( j = 1 ; j <= n ; j++ )
{
for ( auto vec : graf[j] )
{
if ( i >= vec.second )
dp[i][j] = max(dp[i][j],dp[i-vec.second][vec.first]) ;
}
dp[i][j] = max(dp[i-1][j],dp[i][j]) ;
if ( dp[i][j] != -1 )
dp[i][j] += hotz[i][j] ;
}
}
for ( i = 1 ; i <= p ; i++ )
{
fin >> x >> y ;
fout << dp[y][x] << '\n' ;
}
}