求助这个思路是否正确
查看原帖
求助这个思路是否正确
748509
2huk楼主2024/4/16 22:06

rt。目前我的代码过了样例 & Hack 数据。

在往上跳重链的时候,我判断这两个链的相邻节点是否颜色相同,即判断 top[a] 和 fa[top[a]] 是否颜色相同。相同则将答案减一。

int query(int a, int b) {
	int res = 0;
	while (top[a] != top[b]) {
		if (dep[top[a]] < dep[top[b]]) std::swap(a, b);
		res += S.query(1, id[top[a]], id[a]).v - (S.query(1, id[fa[top[a]]]) == S.query(1, id[top[a]]));
		a = fa[top[a]];
	}
	if (dep[a] > dep[b]) std::swap(a, b);
	return res + S.query(1, id[a], id[b]).v;
}

我觉得这里可能会假。但也说不定是别的地方错了/kel

求调悬关。

2024/4/16 22:06
加载中...