8 #ifndef INCLUDED_SDSL_K2_TREE_HELPER
9 #define INCLUDED_SDSL_K2_TREE_HELPER
27 template <
typename t_bv = bit_vector>
35 std::vector<std::deque<t_bv>> & acc)
37 unsigned i, j, b_size = pow(k, 2);
39 bool is_leaf = (l == height);
43 for (i = 0; i < k; i++)
44 for (j = 0; j < k; j++)
45 if (p + i < matrix.size() && q + j < matrix.size() && matrix[p + i][q + j] == 1) b[i * k + j] = 1;
49 for (i = 0; i < k; i++)
50 for (j = 0; j < k; j++)
52 j] =
_build_from_matrix(matrix, k, n / k, height, l + 1, p + i * (n / k), q + j * (n / k), acc);
56 for (i = 0; i < b_size; i++)
61 acc[l].push_back(std::move(b));
80 return ((v - r_0) / l) * k + (u - c_0) / l;
83 template <
typename t_bv = bit_vector>
bit_vectors.hpp contains classes for uncompressed and compressed bit vector representations.
A generic vector class for integers of width .
int _build_from_matrix(const std::vector< std::vector< int >> &matrix, const uint8_t k, int n, const int height, int l, int p, int q, std::vector< std::deque< t_bv >> &acc)
uint16_t get_chunk_idx(idx_type v, idx_type u, idx_type c_0, idx_type r_0, size_type l, uint8_t k)
Get the chunk index ([0, k^2[) of a submatrix point.
void build_template_vector(bit_vector &k_t_, bit_vector &k_l_, t_bv &k_t, t_bv &k_l)
int_vector ::size_type size_type
void build_template_vector< bit_vector >(bit_vector &k_t_, bit_vector &k_l_, bit_vector &k_t, bit_vector &k_l)
int_vector ::size_type idx_type
Namespace for the succinct data structure library.
void swap(int_vector_reference< t_int_vector > x, int_vector_reference< t_int_vector > y) noexcept