题解 3157: 蓝桥杯2023年第十四届省赛真题-砍树

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

砍树(详细注释)--先暴力--再树链剖分+树差分优化

解题思路:满足条件的边一定是每组数据都要经过的公共边例如:36;45;那满足条件的边一定既是3到6的路径又是4到5的路径,那这条边权值一定为m;再选出最大编号的边注意事项:参考代码:暴力(只能过一部分):#includeusingnamespacestd;typedefpairpii;constint

链式前向星解法

解题思路:本题写一个链式前向星的写法,仅供参考由于我们知道在一棵树上任意两个点的路径经过的边是唯一确定的因此对于每一个路径我们对路径上的边的边权加一,这里我们可以通过树上差分在O(n)复杂度内解决,一共m对因此如果说某个边被经过了m次则说明在这m条路径上每一条都需要经过这个边,

蓝桥杯2023年第十四届省赛真题-砍树(树上差分)

#解题思路对于每一对$$(a_i,b_i)$$,$$a_i$$到$$b_i$$之间的边都可以砍掉;把可以砍掉的边权值+1,那么这条边的权值$$w$$表示砍掉这条边可以满足$$w$$对$$(a_i,b_i)$$不连通;最后找到权值等于$$m$$且编号最大的删去即可,

tarjan + lca + 树上差分

#思路*主要讲讲怎么在边上树上差分吧具体的思路就是,将要查询`diff[u]+=1,diff[v]+=1,diff[lca]-=2`,然后*状态一![](/image_editor_upload/20230419/20230419062353_26098.png)*状态二![](/image_edit

树上差分

##试题J:砍树###题意描述给定一棵由n个结点组成的树以及m个不重复的无序数对$(a_1,b_1),(a_2,b_2),...,(a_m,b_m)$,其中$a_i$互不相同,$b_i$互不相同,$a_i\neqb_j$(1≤i,j≤m)。小明想知道是否能够选择一条树上的边砍断,