제출 #817912

#제출 시각아이디문제언어결과실행 시간메모리
817912Ozy여행하는 상인 (APIO17_merchant)C++17
0 / 100
14 ms1876 KiB
#include <bits/stdc++.h>
using namespace std;
#define lli long long int
#define debug(a) cout << #a <<  " = " << a << endl
#define debugsl(a) cout << #a << " = " << a << ", "
#define rep(i,a,b) for(int i = (a); i <= (b); i++)
#define repa(i,a,b) for(int i = (a); i >= (b); i--)
#define pll pair<lli,lli> 

#define MAX 100
#define MAX_k 1000
//para el vector de hijos
#define des first
#define w second 
//para la funcion de solve
#define id second

lli n,m,k,a,b,c,res;
lli camino_op[MAX+2][MAX+2];
lli compra[MAX+2][MAX_k+2], venta[MAX+2][MAX_k+2];//tienda y producto
vector<pll> hijos[MAX+2];

void solve(lli pos) {
    priority_queue<pll> cola;
    cola.push({0,pos});
    rep(i,1,n) camino_op[pos][i] = -1; 

    pll act;
    while (!cola.empty()) {
        act = cola.top();
        cola.pop();

        if (camino_op[pos][act.id] >= 0) continue;

        camino_op[pos][act.id] = act.first;
        for(auto h : hijos[pos]) {
            if(camino_op[pos][h.des] >= 0) continue;
            cola.push({act.first+h.w,h.des});
        }
    }

}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> m >> k;
    rep(i,1,n) {
        rep(j,1,k*2) {
            if(j&1) {
                a=  (j/2)+1;
                cin >> compra[i][a] >> venta[i][a];
            }
        }
    }
    rep(i,1,m) {
        cin >> a >> b >> c;
        hijos[a].push_back({b,c});
    }

    //camino minimo de todos a todos
    rep(i,1,n) solve(i);    

    //tengo que ver por cada producto que es lo que mas me combiene
    res = 0;
    rep(prod,1,k){
        if (compra[1][prod] == -1) continue;
        rep(i,2,n) {
            if(venta[i][prod] == -1) continue;
            if (camino_op[1][i] == -1 || camino_op[i][1] == -1) continue;

            a = compra[1][prod]- venta[i][prod];
            b = camino_op[1][i] + camino_op[i][1];
            a /= b;
            res = max(res,a);
        }
    }
    cout << res;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...