不难发现题中过程对应着动态维护关于$C$的最大生成树. 为了让$D$最大,同时让字典序最大,那么最后得到的一定是按$pair(C,D,编号)$排序的最大生成树. 对于每条非树边$(u,v,C)$,那么它要早于树上$u$到$v$路径上任意一条同$C$值的边出现. 而非树边之间显然不存在限制关系,因此非树边一定是按编号从小到大出现. 从大到小考虑每条非树边,在树上找到$u,v$向上最近的同$C$值的边,然后暴力往上染色到LCA,加入限制关系. 找往上最近的同$C$值的边可以通过离线dfs一遍树,维护…