#include "shortcut.h"
#include <bits/stdc++.h>
using namespace std;
template <typename T>
using pqg = priority_queue<T, vector<T>, greater<T>>;
long long find_shortcut(int n, vector<int> l, vector<int> d, int C)
{
int cnt = count_if(d.begin(), d.end(), [&](int x)
{ return x > 0; });
vector adj(n + cnt, vector<pair<int, int>>());
for (int i = 0; i + 1 < n; i++)
{
adj[i].push_back({i + 1, l[i]});
adj[i + 1].push_back({i, l[i]});
}
for (int i = 0, j = 0; i < n; i++)
{
if (d[i] == 0)
continue;
adj[i].push_back({n + j, d[i]});
adj[n + j].push_back({i, d[i]});
j++;
}
long long mn = 1e18 + 10;
vector<long long> dis(n + cnt);
auto bfs = [&](int start) -> long long
{
pqg<pair<long long, int>> pq;
dis.assign(n + cnt, 1e18 + 10);
pq.push({0, start});
long long mx = 0;
while (not pq.empty())
{
auto [c, u] = pq.top();
pq.pop();
if (dis[u] <= c)
continue;
dis[u] = c;
mx = max(mx, dis[u]);
for (auto [v, w] : adj[u])
if(dis[v] > c + w)
pq.push({c + w, v});
}
return mx;
};
vector<int> edge;
for(int i = 0, j = 0; i < n; i++)
{
if(d[i] == 0)
{
edge.push_back(i);
continue;
}
edge.push_back(n + j);
j++;
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
adj[i].push_back({j, C});
adj[j].push_back({i, C});
long long mx = 0;
for (auto k: edge)
{
long long s = bfs(k);
if (mx < s)
mx = s;
}
if (mn > mx)
mn = mx;
adj[i].pop_back();
adj[j].pop_back();
}
}
return mn;
}
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... |