在塔子哥所工作的幻想科技公司里,每位员工在需要请求权限时,必须向其直属的某位领导提出申请。为了保持决策的高效与合理,员工会选择与自己思维模式最为接近的上级领导进行沟通。公司的组织架构如同一棵树,每位员工(除了 CEO)均有一位直属上级。
可以使用 multiset
来维护当节点的 {权值,深度,下标}。由于题目要求在权值之差相同时,找到离自己最近的。因为 multiset
默认是从小到大排序,这边可以将深度取相反数,这样方便维护。
具体做法如下:
DFS 遍历树,对于当前节点 u,在 multiset
中二分找到第一个 大于等于当前节点权值 w[u] 的祖先节点 p1 ,并记录此时的权值差计为 d1