Submission #568818

#TimeUsernameProblemLanguageResultExecution timeMemory
568818joshjmsTravelling Merchant (APIO17_merchant)C++17
100 / 100
132 ms4336 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ld long double #define pb push_back #define fi first #define se second #define debug(x) cout << #x << " => " << x << "\n"; const long long mod = 1e9 + 7; int n, m, k, b[105][1005], s[105][1005]; int g[105][105], ng[105][105], nng[105][105]; int L, R, ans; void solve () { cin >> n >> m >> k; for(int i = 1; i <= n; i++) { for(int j = 1; j <= k; j++) { cin >> b[i][j] >> s[i][j]; } } for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { g[i][j] = 1e9; } } for(int i = 1, u, v, w; i <= m; i++) { cin >> u >> v >> w; g[u][v] = w; } for(int rep = 0; rep < 2; rep++) { for(int l = 1; l <= n; l++) { for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { g[i][j] = min(g[i][j], g[i][l] + g[l][j]); } } } } for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { int maxProfit = 0; for(int l = 1; l <= k; l++) { if(b[i][l] != -1 && s[j][l] != -1) { maxProfit = max(maxProfit, s[j][l] - b[i][l]); } } if(maxProfit > 0) { ng[i][j] = maxProfit; } } } L = 1, R = 1e9, ans = 0; while(L <= R) { int mid = (L + R) / 2; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { nng[i][j] = -1e18; } } for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { nng[i][j] = ng[i][j] - g[i][j] * mid; } } for(int rep = 0; rep < 2; rep++) { for(int l = 1; l <= n; l++) { for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { nng[i][j] = max(nng[i][j], nng[i][l] + nng[l][j]); } } } } bool possible = false; for(int i = 1; i <= n; i++) if(nng[i][i] >= 0) {possible = true; break;} if(possible) ans = mid, L = mid + 1; else R = mid - 1; } cout << ans << "\n"; } signed main () { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve (); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...