圖論好題。
我們來想一下什麼情況下點 \(u\) 能夠隔著箱子到達點 \(v\)。容易發現,其充要條件是,\(u\) 和 \(v\) 屬於同一個點雙。
那麼,首先跑一遍 Tarjan 求出每個點所在的點雙。
然後,跑一遍 bfs 求出初始狀態下箱子哪幾個方向可達。
最後,再跑一遍 bfs,用 \(f_{i,j,0/1/2/3}\) 表示當箱子在位置 \((i,j)\) 時,哪幾個方向可達。
然後就做完了,\(O(1)\) 判斷即可。
圖論好題。
我們來想一下什麼情況下點 \(u\) 能夠隔著箱子到達點 \(v\)。容易發現,其充要條件是,\(u\) 和 \(v\) 屬於同一個點雙。
那麼,首先跑一遍 Tarjan 求出每個點所在的點雙。
然後,跑一遍 bfs 求出初始狀態下箱子哪幾個方向可達。
最後,再跑一遍 bfs,用 \(f_{i,j,0/1/2/3}\) 表示當箱子在位置 \((i,j)\) 時,哪幾個方向可達。
然後就做完了,\(O(1)\) 判斷即可。