洛谷应该是疯了,又给我推荐黑题,又花了一上午
闲话少说,先给链接
大致题意描述(语文不好请见谅):
给一棵树,再给P条路径,每条路径有权值。
有Q次询问,每次给一条路径和k,让你输出能完全覆盖这条路径的 第k大路径(的权值)
(a --> b) & (b --> a) are the same
我知道您肯定没看懂,所以您还是去打开链接看吧
先考虑如何得到完全覆盖的路径:
设水果路径起点为x,终点为y,且dep[x]<dep[y]
设盘子路径起点为a,终点为b
设一点dfs序为dfn,子树dfn最大的点的dfn为low(即dfn~low为这一棵子树的所有节点)
若lca(x,y)==x:
设w为 x --> y 路径上的第一个点(不包括x)
则有a在y子树内,b不在w子树内
即:dfn[y]<=dfn[a]<=low[y],且(1<=dfn[b]<dfn[w] || low[w]<dfn[b]<=n)
else:
a、b两点都分别在x、y子树内