论虚树的写法问题
  • 板块学术版
  • 楼主After__rain
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/3/14 10:21
  • 上次更新2023/11/5 02:05:13
查看原帖
论虚树的写法问题
100226
After__rain楼主2021/3/14 10:21

虚树的构建是不是有两种方法 一种长这样:

void insert(int x){
	if(op == 1){op++ , q[op] = x;return;}
	int LCA = lca(q[op] , x);
	if(LCA == q[op])return;
	while(op > 1 && dfn[q[op - 1]] >= dfn[LCA]){
		add2(q[op - 1] , q[op]) , op--;
	}
	if(LCA != q[op]){
		add2(LCA , q[op]) , q[op] = LCA;
	}
	q[++op] = x;
}

另一种长这样

	for(int i = 1 ; i < m ; i++)Q[++len2] = lca(Q[i] , Q[i + 1]);
		sort(Q + 1 , Q + 1 + len2 , cmp);
		len2 = unique(Q + 1 , Q + 1 + len2) - (Q + 1);
		for(int i = 1 ; i <= len2 ; i++){
			while(len >= 1){
				if(L[q[len]] <= dfn[Q[i]] && dfn[Q[i]] <= R[q[len]]){
					h2[q[len]].push_back(Q[i]);
					break;
				}
				len--;
			}
			q[++len] = Q[i];
		}
2021/3/14 10:21
加载中...