洛谷智能推荐给了我这道题。
第一眼各种树套树优化建边?然鹅空间炸掉。
然后有人说可以不把边建出来,而是用树套树来维护边(此处边指弹跳装置)。
照原来 Dijkstra 的过程,但我们把优先队列里存的换成最后经过某条边的最短路长度。
否则,会出现树套树上矩阵取 min 操作,我可不会吉司机线段树(
这样的话,当某条边第一次被取出时,就用其长度去更新所有能走到的点,并把走到的点删除。
然后空间问题,由于第二层我们实际上需要的操作只是遍历某个区间和插入删除,所以可以直接用 set,总空间复杂度 O(nlogn)。
代码:
1 |
|