次小生成树 http://poj.org/problem?id=1679 不难得出,次小生成树可以由最小生成树更换一条边得到. 首先构造原图的最小生成树,然后枚举每一条不在最小生成树中的边 (u, v, w),尝试将这条边加入生成树,因为直接加入边会产生环,所以我们需要在加边之前删去最小生成树上 u 到 v 的路径上权值最大的边.在枚举每一条边时我们都会得到一棵生成树,这些生成树中边权和最小的即为要求的次小生成树. 需要在构造最小生成树时将完整的树结构构造出来,并且使用树上倍增算法查询两点间边权…