Submission #1364648

#TimeUsernameProblemLanguageResultExecution timeMemory
1364648Ekber_EkberTravelling Merchant (APIO17_merchant)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#ifndef ONLINE_JUDGE
    #include <debug.h>
#else
    #define debug(...)
#endif
#define GOOD_LUCK ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define int long long
#define endl "\n"
#define ff first
#define ss second
#define pb push_back
#define all(v) v.begin(), v.end()
using namespace std;

constexpr int MAX = 2e+5 + 1, INF = 2e+9, MOD = 1e+9 + 7, K = 31;

void _() {
    int n, m, k;
    cin >> n >> m >> k;
    vector <vector <int>> b(n+1, vector <int>(k, -1)), s(n+1, vector <int>(k, -1));
    for (int i = 1; i <= n; i++) {
        for (int j = 0; j < k; j++) cin >> b[i][j] >> s[i][j];
    }
    vector <vector <int>> dis(n+1, vector <int>(n+1, INF));
    for (int i = 0; i < m; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        dis[a][b] = c;
    }
    for (int a = 1; a <= n; a++) {
        for (int b = 1; b <= n; b++) {
            for (int c = 1; c <= n; c++) {
                dis[b][c] = min(dis[b][c], dis[b][a] + dis[a][c]);
            }
        }
    }
    vector <vector <int>> p(n+1, vector <int>(n+1, 0));
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            for (int z = 0; z < k; z++) {
                if (s[j][z] == -1 || b[i][z] == -1) continue;
                p[i][j] = max(p[i][j], s[j][z] - b[i][z]);
            }
        }
    }
    int l = 0, r = INF, res=0;
    while (l <= r) {
        int mid = (l + r) / 2;
        vector <vector <int>> w(n+1, vector <int>(n+1, INF));
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if (dis[i][j] >= INF) w[i][j] = INF;
                else w[i][j] = mid * dis[i][j] - p[i][j];
            }
        }
        for (int z = 1; z <= n; z++) {
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= n; j++) {
                    w[i][j] = min(w[i][j], w[i][z] + w[z][j]);
                }
            }
        }
        bool ok = 0;
        for (int i = 1; i <= n; i++) {
            if (w[i][i] <= 0) ok = 1;
        }
        if (ok) res = mid, l = mid + 1;
        else r = mid - 1;
    }
    cout << res;
}

signed main() {

    GOOD_LUCK

    int tests=1;
    // cin >> tests;
    for (int i=1; i <= tests; i++) {
        _();
        cout << endl;
    }

    return 0;
}

Compilation message (stderr)

merchant.cpp:3:14: fatal error: debug.h: No such file or directory
    3 |     #include <debug.h>
      |              ^~~~~~~~~
compilation terminated.