P2573 [SCOI2012] 滑雪

P2573

bzoj #2753

一开始以为最优答案就是最短路径树,结果发现是错的

首先我们可以观察一下,发现时间胶囊的作用就是回到某个已经经过的节点,显然是一个最小生成树

但是这道题还有高度的限制,我们在生成树的时候并不能把所有的边直接按照边权排序,因为这样的话可能会出现一些不合法的边。

那我们再观察一下发现树上的任意一条有向边的到达点的高度都是小于出发点的,所以就可以以到达点高度为第一关键字,边权为第二关键字来排序,这样就相当于一层一层地向树中加边

剩下的非常简单,就是一个 dfs 搜出可以到达的点和一个并查集维护 kurskal 即可

最终复杂度 \(O(n \log n)\)

posted @ 2023-10-25 21:35  FOX_konata  阅读(10)  评论(0编辑  收藏  举报