Submission #746391

#TimeUsernameProblemLanguageResultExecution timeMemory
746391kirakosyanTravelling Merchant (APIO17_merchant)C++17
100 / 100
110 ms4428 KiB
#include <iostream> #include <vector> #include <algorithm> #include <set> #include <cmath> #include <map> #include <string> #include <ios> #include <iomanip> #include <deque> #include <queue> #include <list> #include <stack> #define FASTIO ios_base::sync_with_stdio(0); cin.tie(NULL); using ll = long long; using namespace std; ll gcd(ll n1, ll n2) { if (n2 != 0) return gcd(n2, n1 % n2); else return n1; } ll lcm(ll a, ll b) { return a * b / (gcd(a, b)); } ll pv(ll a, ll b) { if (b == 0)return 1; ll res = pv(a, b / 2); if (b % 2) { return (res * res) * a; } else { return (res * res); } } vector<vector<pair<ll, ll>>>gp; void solve() { ll n, m, k; cin >> n >> m >> k; gp = vector<vector<pair<ll, ll>>>(n); vector<vector<ll>>apr(n, vector<ll>(2 * k)); for (ll i = 0; i < n; i++) { for (ll j = 0; j < 2 * k; j++) { cin >> apr[i][j]; } } vector<vector<ll>>d(n, vector<ll>(n, 1e18)), max_delta(n, vector<ll>(n)); for (ll i = 0; i < m; i++) { ll u, v, w; cin >> u >> v >> w; u--; v--; gp[u].push_back({ v,w }); d[u][v] = w; } for (ll k = 0; k < n; k++) { for (ll i = 0; i < n; i++) { for (ll j = 0; j < n; j++) { d[i][j] = min(d[i][j], d[i][k] + d[k][j]); } } } for (ll i = 0; i < n; i++) { for (ll j = 0; j < n; j++) { for (ll e = 0; e < 2 * k; e += 2) { if (apr[i][e] != -1 && apr[j][e + 1] != -1&&i!=j) { max_delta[i][j] = max(apr[j][e+1] - apr[i][e], max_delta[i][j]); } } } } // for(int i=0;i<n;i++){ // for(int j=0;j<n;j++){ // cout<<d[i][j]<<" "; // } // cout<<endl; // } ll l=0,r=1e11; while(l+1<r){ vector<vector<ll>> d1(n, vector<ll>(n, -1e18)); ll a=0; ll mid=(l+r)/2; for(ll i=0;i<n;i++){ for(ll j=0;j<n;j++){ ll a=1e18/mid; d1[i][j]=max_delta[i][j]-mid*min(a, d[i][j]); } } for (ll k = 0; k < n; ++k) { for (ll i = 0; i < n; ++i) { for (ll j = 0; j < n; ++j) { d1[i][j] = max(d1[i][j], d1[i][k] + d1[k][j]); } } } for(ll i=0;i<n;i++)if(d1[i][i]>=0)a=1; if(a==1) l=mid; else r=mid; } cout<<l<<endl; } signed main() { FASTIO ll t=1; //cin >> t; while (t--) { 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...