最短路
题目大意
存在 nnn 个节点 ,mmm 次操作,每次操作或者查询两个节点之间的距离,或者删除一个节点,并且删除一个点,并让其邻域的点两两之间连上一条边。
题解思路
题目分析
我们可以将删除操作的本质理解为:对于所有经过该节点的最短路径,其距离长度将减少 111。基于这一观察,可以将问题转化为以下形式:
初始状态下,所有节点的权值均为 111。操作1对应将指定节点的权值修改为 000,而操作2则转化为查询两个节点之间最短路径上权值为 111 的节点数量。
这种转化使得问题可以通过树链剖分技术高效解决。具体而言,我们可以:
1. 建立树链剖分数据结构来维护节点权值
2. 实现单点修改操作(将节点权值从1改为0)
3. 通过路径查询统计两个节点间最短路径上权值为1的节点数量
时间复杂度 O(nlog2nn\log^2 nnlog2n)
参考代码