本文整理汇总了C++中Cst::lca方法的典型用法代码示例。如果您正苦于以下问题:C++ Cst::lca方法的具体用法?C++ Cst::lca怎么用?C++ Cst::lca使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cst
的用法示例。
在下文中一共展示了Cst::lca方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test_cst_lca_operation
void test_cst_lca_operation(const Cst& cst, typename Cst::size_type times=1000000, uint64_t x=17)
{
typedef typename Cst::size_type size_type;
typedef typename Cst::node_type node_type;
// generate \f$2^{19}\f$ random pairs of leafs
size_type n = cst.csa.size();
uint64_t mask = (1<<20)-1;
std::vector<node_type> nodes(1<<20);
srand(x);
for (size_type i=0; i < nodes.size(); ++i) {
nodes[i] = cst.select_leaf(rand()%n + 1);
}
size_type cnt=0;
write_R_output("cst","lca","begin",times,cnt);
for (size_type i=0; i<times; ++i) {
node_type v = cst.lca(nodes[(2*i) & mask], nodes[(2*i+1) & mask]);
if (v == cst.root())
cnt++;
// if(i<30)
// std::cout<<"lca("<<cst.lb(nodes[(2*i)&mask])<<","<<cst.lb(nodes[(2*i+1)&mask])<<")=("<<cst.lb(v)<<","<<cst.rb(v)<<")"<<std::endl;
}
write_R_output("cst","lca","end",times,cnt);
}