AtCoder 🟡 ABC435D Reachability Query 2
題目的難度顏色使用 Luogu 上的分級,由簡單到困難分別為 🔴🟠🟡🟢🔵🟣⚫。
🔗 ABC435D Reachability Query 2
rating: 644
Problem Statement
題目簡述
給定一個 個節點、 條邊的有向圖,初始所有節點為白色。
處理 個查詢:
1 v:將節點 染成黑色。2 v:判斷從節點 出發,沿著邊走,是否能到達某個黑色節點。
Constraints
約束條件
- 無自環、無重邊
思路:反向圖 + BFS/DFS 預處理
關鍵轉換
將「從 能否到達黑點」轉換為「黑點能否沿反向邊到達 」。
觀察:直接對每個查詢 2 進行 BFS/DFS 會 TLE。但如果我們反向思考:
- 建立反向圖 :原圖中 的邊,在反向圖中變成 。
- 當節點 被染黑時,從 在反向圖上進行 BFS,標記所有能到達的節點為「可達黑點」。
- 查詢時,直接判斷該節點是否已被標記。
為何正確?
在原圖中「 能到達 」 在反向圖中「 能到達 」。
因此,當 變黑時,在反向圖上從 出發能到達的所有節點,都是原圖中能到達 (黑點)的節點。
優化:每個節點最多被標記一次,總體 BFS 的節點訪問次數為 ,邊訪問次數為 。
複雜度分析
- 時間複雜度:
- 空間複雜度:
Code
1 | from collections import deque |
寫在最後
PROMPT
這裡什麼都沒有。
本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 十六個天亮!
評論
WalineGiscus









