Submission #1253698

#TimeUsernameProblemLanguageResultExecution timeMemory
1253698faricaFactories (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; vi sz; vector<bool>is_removed; vector<vector<pi>>adjL; 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, vi()); 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: In function 'void Init(int, int*, int*, int*)':
factories.cpp:53:16: error: no matching function for call to 'std::vector<std::vector<std::pair<int, int> > >::assign(int&, vi)'
   53 |     adjL.assign(N, vi());
      |     ~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/11/vector:67,
                 from /usr/include/c++/11/functional:62,
                 from /usr/include/c++/11/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/11/algorithm:74,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from factories.cpp:2:
/usr/include/c++/11/bits/stl_vector.h:768:9: note: candidate: 'template<class _InputIterator, class> void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; <template-parameter-2-2> = <template-parameter-1-2>; _Tp = std::vector<std::pair<int, int> >; _Alloc = std::allocator<std::vector<std::pair<int, int> > >]'
  768 |         assign(_InputIterator __first, _InputIterator __last)
      |         ^~~~~~
/usr/include/c++/11/bits/stl_vector.h:768:9: note:   template argument deduction/substitution failed:
factories.cpp:53:16: note:   deduced conflicting types for parameter '_InputIterator' ('int' and 'std::vector<int>')
   53 |     adjL.assign(N, vi());
      |     ~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/11/vector:67,
                 from /usr/include/c++/11/functional:62,
                 from /usr/include/c++/11/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/11/algorithm:74,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from factories.cpp:2:
/usr/include/c++/11/bits/stl_vector.h:749:7: note: candidate: 'void std::vector<_Tp, _Alloc>::assign(std::vector<_Tp, _Alloc>::size_type, const value_type&) [with _Tp = std::vector<std::pair<int, int> >; _Alloc = std::allocator<std::vector<std::pair<int, int> > >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = std::vector<std::pair<int, int> >]'
  749 |       assign(size_type __n, const value_type& __val)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_vector.h:749:47: note:   no known conversion for argument 2 from 'vi' {aka 'std::vector<int>'} to 'const value_type&' {aka 'const std::vector<std::pair<int, int> >&'}
  749 |       assign(size_type __n, const value_type& __val)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/stl_vector.h:794:7: note: candidate: 'void std::vector<_Tp, _Alloc>::assign(std::initializer_list<_Tp>) [with _Tp = std::vector<std::pair<int, int> >; _Alloc = std::allocator<std::vector<std::pair<int, int> > >]'
  794 |       assign(initializer_list<value_type> __l)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_vector.h:794:7: note:   candidate expects 1 argument, 2 provided
factories.cpp:57:14: error: 'a' was not declared in this scope
   57 |         adjL[a[i]].push_back({b[i], d[i]});
      |              ^
factories.cpp:57:31: error: 'b' was not declared in this scope
   57 |         adjL[a[i]].push_back({b[i], d[i]});
      |                               ^
factories.cpp:57:37: error: 'd' was not declared in this scope
   57 |         adjL[a[i]].push_back({b[i], d[i]});
      |                                     ^
factories.cpp: At global scope:
factories.cpp:63:7: error: 'll' does not name a type
   63 | const ll MXVAL = 1e18;
      |       ^~
factories.cpp: In function 'long long int Query(int, int*, int, int*)':
factories.cpp:66:12: error: 'll' was not declared in this scope
   66 |     vector<ll> min_dist(N2, MXVAL);
      |            ^~
factories.cpp:66:14: error: template argument 1 is invalid
   66 |     vector<ll> min_dist(N2, MXVAL);
      |              ^
factories.cpp:66:14: error: template argument 2 is invalid
factories.cpp:66:29: error: 'MXVAL' was not declared in this scope
   66 |     vector<ll> min_dist(N2, MXVAL);
      |                             ^~~~~
factories.cpp:66:34: error: expression list treated as compound expression in initializer [-fpermissive]
   66 |     vector<ll> min_dist(N2, MXVAL);
      |                                  ^
factories.cpp:69:21: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   69 |             min_dist[ancestor] = min(min_dist[ancestor], dist);
      |                     ^
factories.cpp:69:46: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   69 |             min_dist[ancestor] = min(min_dist[ancestor], dist);
      |                                              ^
factories.cpp:72:7: error: expected ';' before 'ans'
   72 |     ll ans = 0;
      |       ^~~~
      |       ;
factories.cpp:74:11: error: expected ';' before 'cnt'
   74 |         ll cnt = MXVAL;
      |           ^~~~
      |           ;
factories.cpp:76:24: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   76 |             if(min_dist[ancestor] == MXVAL) continue;
      |                        ^
factories.cpp:77:13: error: 'cnt' was not declared in this scope; did you mean 'int'?
   77 |             cnt = min(cnt, dist + min_dist[ancestor]);
      |             ^~~
      |             int
factories.cpp:77:43: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   77 |             cnt = min(cnt, dist + min_dist[ancestor]);
      |                                           ^
factories.cpp:79:9: error: 'ans' was not declared in this scope; did you mean 'abs'?
   79 |         ans += cnt;
      |         ^~~
      |         abs
factories.cpp:79:16: error: 'cnt' was not declared in this scope; did you mean 'int'?
   79 |         ans += cnt;
      |                ^~~
      |                int
factories.cpp:81:12: error: 'ans' was not declared in this scope; did you mean 'abs'?
   81 |     return ans;
      |            ^~~
      |            abs