蒟蒻拿到LCA程序帮忙注释一下?
  • 板块学术版
  • 楼主speedx
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/5/22 15:22
  • 上次更新2023/11/4 22:54:32
查看原帖
蒟蒻拿到LCA程序帮忙注释一下?
409086
speedx楼主2021/5/22 15:22
#include<bits/stdc++.h>
using namespace std;

const int maxn = 1005;

int up[maxn][30], depth[maxn], parent[maxn];
int logn, n; 
//建立up数组 
void build() {
	for (int i = 0; i <= logn; ++i) {
		for (int k = 1; k <= n; ++k) {
			if (i == 0) {
				up[k][i] = parent[k];
			} else {
				up[k][i] = up[up[k][i-1]][i-1];
			}
		}
	}	
}

//询问u和v部分 
int query(int u, int v) {
	if (depth[u] > depth[v]) {
		return query(v, u);
	}
	// depth[u] <= depth[v]
	int k = logn;
	while (depth[u] != depth[v]) {
		if ((depth[v] - depth[u]) >= (1 << k)) {
			v = up[v][k];
		}
		--k;
	}
	if (u == v) {
		return u;
	}
	for (int i = logn; i >= 0; --i) {
		if (up[v][i] != up[u][i]) {
			v = up[v][i];
			u = up[u][i];
		}
	}
	return up[v][0];
}

int main(){
	logn = log2(n);

	return 0;
}

能不能帮我打个注释orz

2021/5/22 15:22
加载中...