#include <bits/stdc++.h>
#include "shortcut.h"
using namespace std;
const long long MAX = 1'000'000'000'000'000'000;
const int N = 500 + 10;
vector<pair<int, int>> ad[N];
long long find_shortcut(int n, vector<int> l, vector<int> d, int c) {
for (int i = 0; i < n - 1; ++i) {
ad[i].push_back({i + 1, l[i]});
ad[i + 1].push_back({i, l[i]});
}
auto bfs = [&](int st) {
vector<long long> f(n, MAX);
f[st] = 0;
queue<int> q({st});
while (q.size()) {
auto u = q.front(); q.pop();
for (const auto& [v, w] : ad[u]) {
if (f[v] > f[u] + w) {
f[v] = f[u] + w;
q.push(v);
}
}
}
int ret = -1;
for (int i = 0; i < n; ++i) {
if (i != st && (ret == -1 || f[i] + d[i] > f[ret] + d[ret])) ret = i;
}
return make_pair(ret, f[ret] + d[ret] + d[st]);
};
long long answer = MAX;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
ad[i].push_back({j, c});
ad[j].push_back({i, c});
int st = bfs(0).first;
answer = min(answer, bfs(st).second);
ad[i].pop_back();
ad[j].pop_back();
}
}
return answer;
}
Compilation message (stderr)
shortcut.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
shortcut_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | 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... |