这道题目一开始大家肯定想到树,但是这道题目还是要一些思维量的。
首先我们考虑一个点的权值 a_i 和它在图中的深度 dep_i 。
我们可以考虑他们的差 c_i=a_i-dep_i 我们注意到 c_i 的值是不会变的!因为当它向上一位的时候 dep_i 和 a_i 都同时加一,同样的道理,如果向下值也是不变的。
接下来考虑这个 c_i 要比模拟 a_i 的变化要简单多了!
我们尝试联系出 c_i 与 a_i 的关系,我们会发现若 c_i<c_{f(i)} 那么 a_i≤a_{f(j)} 因为 c_i=a_i-dep_i=a_{f(i)}-dep_i-1<a_{f(i)}-dep_i=a_{f(i)} !即 a_{f(i)}≥a_i 。
那么容易发现每个点都可以移动到树上的任意一个点!那么我们只需要考虑如何将 c_i 填入树种即可。
首先我们先确定唯一的最大值填在根节点上。
填充完毕后,我们便将除根节点以外的子树,变为链。
由贪心我们先填充 c_i 出现次数多的,并且先从长的链开始填充。