This documentation is automatically generated by online-judge-tools/verification-helper
#ifndef call_from_test
#include <bits/stdc++.h>
using namespace std;
#endif
//BEGIN CUT HERE
template<typename T>
struct VoronoiMST{
int n;
using E = pair<int, T>;
using P = pair<T, int>;
vector<vector<E> > G;
VoronoiMST(vector<T> &x){
n=x.size();
G.assign(n<<1,vector<E>());
for(int i=0;i<n;i++) G[i].emplace_back(n+i,x[i]);
}
void add_edge(int u,int v,T c){
G[u+n].emplace_back(v+n,c);
G[v+n].emplace_back(u+n,c);
}
vector<vector<E> > build(){
priority_queue<P, vector<P>, greater<P> > pq;
const T INF = numeric_limits<T>::max();
vector<T> dist(n<<1,INF);
vector<int> from(n<<1,-1);
for(int i=0;i<n;i++){
dist[i]=0;from[i]=i;
pq.emplace(dist[i],i);
}
while(!pq.empty()){
T d;
int v;
tie(d,v)=pq.top();pq.pop();
if(dist[v]<d) continue;
for(E e:G[v]){
int u=e.first;
T c=e.second;
if(dist[u]<=dist[v]+c) continue;
dist[u]=dist[v]+c;
from[u]=from[v];
pq.emplace(dist[u],u);
}
}
vector<vector<E> > H(n);
for(int v=0;v<(n<<1);v++){
for(E e:G[v]){
int u=e.first;
T c=e.second;
if(from[v]==from[u]) continue;
int x=from[v],y=from[u];
T z=dist[v]+dist[u]+c;
H[x].emplace_back(y,z);
H[y].emplace_back(x,z);
}
}
return H;
}
};
//END CUT HERE
#ifndef call_from_test
#define call_from_test
#include "kruskal.cpp"
#undef call_from_test
//INSERT ABOVE HERE
signed CF17FINAL_J(){
cin.tie(0);
ios::sync_with_stdio(0);
using ll = long long;
int n;
cin>>n;
vector<ll> x(n);
for(int i=0;i<n;i++) cin>>x[i];
VoronoiMST<ll> vo(x);
for(int i=1;i<n;i++){
int a,b,c;
cin>>a>>b>>c;
a--;b--;
vo.add_edge(a,b,c);
}
auto G=vo.build();
Kruskal<ll> ks(n);
for(int v=0;v<n;v++){
for(auto e:G[v]){
int u=e.first;
ll c=e.second;
if(v<u) ks.add_edge(v,u,c);
}
}
cout<<ks.build()<<endl;
return 0;
}
/*
verified on 2020/05/07
https://atcoder.jp/contests/cf17-final/tasks/cf17_final_j
*/
signed main(){
CF17FINAL_J();
return 0;
}
#endif
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/site-packages/onlinejudge_verify/languages/cplusplus.py", line 187, in bundle
bundler.update(path)
File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 400, in update
raise BundleErrorAt(path, i + 1, "unable to process #include in #if / #ifdef / #ifndef other than include guards")
onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt: graph/voronoiminimumspanningtree.cpp: line 63: unable to process #include in #if / #ifdef / #ifndef other than include guards