Submission #429653

#TimeUsernameProblemLanguageResultExecution timeMemory
429653LouayFarahShortcut (IOI16_shortcut)C++14
0 / 100
2070 ms936 KiB
#include "bits/stdc++.h" #include "shortcut.h" using namespace std; #define pb push_back #define mp make_pair #define fi first #define se second #define ll long long long long find_shortcut(int n, vector<int> l, vector<int> d, int c) { vector<vector<ll>> adj(2*n, vector<ll>(2*n, -1)); for(int i = 0; i<n-1; i++) { adj[i][i+1] = l[i]; adj[i+1][i] = l[i]; } for(int i = 0; i<n ; i++) { adj[i][n+i] = d[i]; adj[n+i][i] = d[i]; } ll res = 1e18; for(int s1 = 0; s1<n; s1++) { for(int s2 = s1+1; s2<n; s2++) { vector<vector<ll>> dist(2*n, vector<ll>(2*n, 1e18)); ll last = adj[s1][s2]; if(s2==s1+1) { if(c<adj[s1][s2]) { adj[s1][s2] = c; adj[s2][s1] = c; } } else { adj[s1][s2] = c; adj[s2][s1] = c; } for(int i = 0; i<2*n; i++) { for(int j = 0; j<2*n; j++) { if(i==j) dist[i][j] = 0; else if(adj[i][j]!=-1) dist[i][j] = adj[i][j]; } } for(int k = 0; k<2*n; k++) for(int i = 0; i<2*n; i++) for(int j = 0; j<2*n; j++) dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]); ll curr = 0; for(int i = 0; i<2*n; i++) for(int j = 0; j<2*n; j++) curr = max(curr, dist[i][j]); res = min(res, curr); adj[s1][s2] = last; adj[s2][s1] = last; } } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...