NP-Hard, -.
"":. - " ", " ", "" .
:

, "", , , "" .
:
weights=w1,w2,w3,...cn cost=c1,c2,..,cn, W, G=(V,E)
V= { V_i,U_i,W_i | i=0,...n }
E= { (W_i,V_i+1,U_i+1 | i=0,...,n-1} U {(V_i,W_i+1), (U_i,W_i+1) | i=0,...,n-1 }
value(W_i,V_i+1) = c_i+1
money(W_i,V_i+1) = w_i+1
value(W_i,U_i+1) = 0
money(W_i,U_i+1) = 0
money(V_i,W_i+1) = cost(V_i,W_i+1) = money(U_i,W_i+1) = cost(U_i,W_i+1) = 0
, W , W.
( Dynamic Programming):
D(start,0) = 0
D(v,x) = infinity x < 0
D(v,x) = min { D(u,x-money(u,v)) + value(u,v) | for each edge (u,v) } U {infinity}
D(v,x) - , node v, x .
, , DAG, .
x 0 MAXIMAL_AMOUNT_OF_MONEY_ALLOWED, D(target,x), .
.
O(|V|*MAX_MONEY + |E|)