考虑到水平有限,所以是疑似。
此题题眼在于路径长度 >=46 时一定时正确的。
正确得求路径长度时求出 u,v 的 lca,并判断 dep[u]+dep[v]-2*dep[lca] 是否 >=46。
考虑到使用树剖 lca,u、v节点最后跳到的位于同一重链上的两个点 x,y(dep[x]<dep[y])
此时计算长度(用 len 表示),应该用 len=dep[u]+dep[v]-2*dep[x]。
但是抽象的是,如果计算长度(用 len2 表示)错误,用 len2=dep[x]+dep[y]-2*dep[x] 即 dep[y]-dep[x] 来计算,这玩意也能过 /qd。
显然 len2>=46 是 len>=46 的充分但不必要条件,所以估计是能卡掉这种抽象写法的。
声明:
错误灵感来源 CaiZi 的题解