2025.8.22校隊分享
先看本質:將 \(1\) 到 \(v\) 的路徑分成兩個部分,一段全部開始,后一段全部走路。枚舉斷點 \(u\),在滿足 \(u\) 到 \(v\) 的路徑上所有的邊的海拔都大于 \(p\) 的情況下,要求 \(1\) 到 \(u\) 的最短路最短。如何求從 \(v\) 出發可以到達的點,這些點顯然滿足從 \(v\) 出發,路徑上所有邊的海拔都大于 \(p\)。這就可以用最小大生成樹解決,按海拔求最大生成樹,發現其實重構樹是個小根堆,對于詢問求出包含 \(v\) 的子樹中的根節點深度最小的海拔大于 \(p\) 的子樹 \(x\),那么 \(x\) 子樹內的所有節點都可以由 \(v\) 開車到達!這個用樹上倍增即可qwq,求深度最小的合法節點,可以用樹上倍增即可,現在該子樹的點都合法,現在就是要求到 \(1\) 的最短距離,直接預處理每個點,子樹合并就可以了。
不放代碼qwq

浙公網安備 33010602011771號