void path_add(int u, int v, int z) {
int fu = top[u], fv = top[v];
while (fu != fv) {
if (dep[fu] >= dep[fv]) update(1, 1, n, dfn[top[u]], dfn[u], z), u = fa[top[u]];
else update(1, 1, n, dfn[top[v]], dfn[v], z), v = fa[top[v]];
fu = top[u];
fv = top[v];
}
if (dfn[u] >= dfn[v]) update(1, 1, n, dfn[v], dfn[u], z);//这里
else update(1, 1, n, dfn[u], dfn[v], z);
}
int path_chk(int u, int v) {
int res = 0;
int fu = top[u], fv = top[v];
while (fu != fv) {
if (dep[fu] >= dep[fv]) res = (res + query(1, 1, n, dfn[top[u]], dfn[u]) % P) % P, u = fa[top[u]];
else res = (res + query(1, 1, n, dfn[top[v]], dfn[v]) % P) % P, v = fa[top[v]];
fu = top[u];
fv = top[v];
}
if (dfn[u] >= dfn[v]) res += query(1, 1, n, dfn[v], dfn[u]);//这里
else res += query(1, 1, n, dfn[u], dfn[v]);
return res;
}
为什么打注释的两行前面的if里换成dep作为比较就会RE,跳到一条重链上不是应该深度越大dfn越大吗?