P4082 做題筆記

CEFqwq發表於2024-11-06

圖論好題。

我們來想一下什麼情況下點 \(u\) 能夠隔著箱子到達點 \(v\)。容易發現,其充要條件是,\(u\)\(v\) 屬於同一個點雙。

那麼,首先跑一遍 Tarjan 求出每個點所在的點雙。

然後,跑一遍 bfs 求出初始狀態下箱子哪幾個方向可達。

最後,再跑一遍 bfs,用 \(f_{i,j,0/1/2/3}\) 表示當箱子在位置 \((i,j)\) 時,哪幾個方向可達。

然後就做完了,\(O(1)\) 判斷即可。