Submission #1253700

#TimeUsernameProblemLanguageResultExecution timeMemory
1253700faricaFactories (JOI14_factories)C++20
Compilation error
0 ms0 KiB
#include "factories.h" #include<bits/stdc++.h> using namespace std; using vi = vector<int>; using pi = pair<int,int>; vector<vector<pi>>ancestors, adjL; vi sz; vector<bool>is_removed; int N2; int get_sz(int pos, int prev = -1) { sz[pos] = 1; for(pi adj: adjL[pos]) { if(adj.first == prev or is_removed[adj.first]) continue; sz[pos] += get_sz(adj.first, pos); } return sz[pos]; } int get_centroid(int pos, int n, int prev = -1) { for(pi adj: adjL[pos]) { if(adj.first == prev or is_removed[adj.first]) continue; if(sz[adj.first]*2 > n) return get_centroid(adj.first, n, pos); } return pos; } void get_dists(int pos, int centroid, int prev, int cur_dist) { for(pi adj: adjL[pos]) { if(adj.first == prev or is_removed[adj.first]) continue; get_dists(adj.first, centroid, pos, cur_dist + adj.second); } ancestors[pos].push_back({centroid, cur_dist}); } void build(int pos = 0) { int centroid = get_centroid(pos, get_sz(pos)); for(pi adj: adjL[centroid]) { if(is_removed[adj.first]) continue; get_dists(adj.first, centroid, centroid, adj.second); } is_removed[centroid] = 1; for(pi adj: adjL[centroid]) { if(is_removed[adj.first]) continue; build(adj.first); } } void Init(int N, int A[], int B[], int D[]) { N2 = N; adjL.assign(N, vector<pi>()); ancestors.assign(N, vector<pi>()); sz.assign(N, 0); for(int i=0; i<N-1; ++i) { adjL[A[i]].push_back({B[i], D[i]}); adjL[B[i]].push_back({A[i], D[i]}); } build(); } const ll MXVAL = 1e18; long long Query(int S, int X[], int T, int Y[]) { vector<ll> min_dist(N2, MXVAL); for(int i=0; i<S; ++i) { for(auto &[ancestor, dist]: ancestors[X[i]]) { min_dist[ancestor] = min(min_dist[ancestor], dist); } } ll ans = 0; for(int i=0; i<T; ++i) { ll cnt = MXVAL; for(auto &[ancestor, dist]: ancestors[Y[i]]) { if(min_dist[ancestor] == MXVAL) continue; cnt = min(cnt, dist + min_dist[ancestor]); } ans += cnt; } return ans; }

Compilation message (stderr)

factories.cpp:62:7: error: 'll' does not name a type
   62 | const ll MXVAL = 1e18;
      |       ^~
factories.cpp: In function 'long long int Query(int, int*, int, int*)':
factories.cpp:65:12: error: 'll' was not declared in this scope
   65 |     vector<ll> min_dist(N2, MXVAL);
      |            ^~
factories.cpp:65:14: error: template argument 1 is invalid
   65 |     vector<ll> min_dist(N2, MXVAL);
      |              ^
factories.cpp:65:14: error: template argument 2 is invalid
factories.cpp:65:29: error: 'MXVAL' was not declared in this scope
   65 |     vector<ll> min_dist(N2, MXVAL);
      |                             ^~~~~
factories.cpp:65:34: error: expression list treated as compound expression in initializer [-fpermissive]
   65 |     vector<ll> min_dist(N2, MXVAL);
      |                                  ^
factories.cpp:68:21: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   68 |             min_dist[ancestor] = min(min_dist[ancestor], dist);
      |                     ^
factories.cpp:68:46: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   68 |             min_dist[ancestor] = min(min_dist[ancestor], dist);
      |                                              ^
factories.cpp:71:7: error: expected ';' before 'ans'
   71 |     ll ans = 0;
      |       ^~~~
      |       ;
factories.cpp:73:11: error: expected ';' before 'cnt'
   73 |         ll cnt = MXVAL;
      |           ^~~~
      |           ;
factories.cpp:75:24: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   75 |             if(min_dist[ancestor] == MXVAL) continue;
      |                        ^
factories.cpp:76:13: error: 'cnt' was not declared in this scope; did you mean 'int'?
   76 |             cnt = min(cnt, dist + min_dist[ancestor]);
      |             ^~~
      |             int
factories.cpp:76:43: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   76 |             cnt = min(cnt, dist + min_dist[ancestor]);
      |                                           ^
factories.cpp:78:9: error: 'ans' was not declared in this scope; did you mean 'abs'?
   78 |         ans += cnt;
      |         ^~~
      |         abs
factories.cpp:78:16: error: 'cnt' was not declared in this scope; did you mean 'int'?
   78 |         ans += cnt;
      |                ^~~
      |                int
factories.cpp:80:12: error: 'ans' was not declared in this scope; did you mean 'abs'?
   80 |     return ans;
      |            ^~~
      |            abs