#include <bits/stdc++.h>
#include "shortcut.h"
using namespace std;
const int MAX_N = 2e6 + 5;
const long long INF = 1e18 + 7;
int n;
set <pair <int, int>> graph[MAX_N];
long long dist[MAX_N];
bool visited[MAX_N];
void bfs(int s) {
for (int i = 0; i < 2 * n; i++) {
dist[i] = INF;
visited[i] = false;
}
priority_queue <pair <long long, int>> pq;
pq.emplace(0, s);
dist[s] = 0;
while (!pq.empty()) {
auto [d, u] = pq.top();
pq.pop();
if (visited[u] == true) continue;
visited[u] = true;
for (auto [v, w] : graph[u]) {
if (visited[v] == false and dist[u] + w < dist[v]) {
dist[v] = dist[u] + w;
pq.emplace(-dist[v], v);
}
}
}
}
long long find_shortcut(int n, vector <int> l, vector <int> d, int c) {
::n = n;
for (int i = 0; i < n - 1; i++) {
graph[i].emplace(i + 1, l[i]);
graph[i + 1].emplace(i, l[i]);
}
for (int i = 0; i < n; i++) {
graph[i].emplace(n + i, d[i]);
graph[n + i].emplace(i, d[i]);
}
long long ans = INF;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
bool ok = false;
if (!graph[i].count(make_pair(j, c))) {
ok = true;
graph[i].emplace(j, c);
graph[j].emplace(i, c);
}
bfs(0);
long long max_dist = 0;
int st = -1;
for (int i = 0; i < 2 * n; i++) {
if (max_dist < dist[i]) {
max_dist = dist[i];
st = i;
}
}
bfs(st);
max_dist = 0;
for (int i = 0; i < 2 * n; i++) max_dist = max(max_dist, dist[i]);
ans = min(ans, max_dist);
if (ok == true) {
graph[i].erase(make_pair(j, c));
graph[j].erase(make_pair(i, c));
}
}
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
94156 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
39 ms |
94132 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
94156 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
39 ms |
94132 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
94156 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
39 ms |
94132 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
94156 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
39 ms |
94132 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
94156 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
39 ms |
94132 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
94156 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
39 ms |
94132 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
94156 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
39 ms |
94132 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
94156 KB |
n = 4, 80 is a correct answer |
2 |
Incorrect |
39 ms |
94132 KB |
n = 9, incorrect answer: jury 110 vs contestant 100 |
3 |
Halted |
0 ms |
0 KB |
- |