This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |