考虑一个naive的做法,按照以是否为红边为第一关键字, \(id\) 为第二关键字,顺次给权值。
容易发现这种做法是不优的,因为非树边有可能 \(id\) 较小并且对后面的红边没有影响。那么我们可以优先处理 \(id\) 较小的非树边。
那么我们直接按照 \(id\) 顺次加边, 容易发现,如果加一条非树边时,如果在树上这条非树边覆盖的路径上有没有赋值的边,那就会产生较劣的影响,所以我们考虑把这些没有赋值的边按照 \(id\) 排序,依次赋值即可,最后再给这条非树边赋值。
我们可以用一个类似并查集的东西来维护未赋值的边,维护每个点上的第一条为赋值的边,如果已经赋值那就将一条边所连的两个联通块连在一起。
因为没有提交网站所以就不放代码了。