天天看點

[USACO2006][poj3182]The Grove(巧妙的BFS)

題目;

題意:一個棋盤中間有一個聯通塊,給你一個起點讓你從起點開始繞聯通塊外圍一圈并回到起點,求最小步數。

分析:

首先根據資料的範圍比較小,是以覺得應該是搜尋,而且是bfs。

樸素的想法是從起點開始bfs 8個方向擴充,不過這樣肯定要跪。

注意到這個題目的特點:路徑要圍一個聯通塊,而我們一般做的bfs是從一個起點到終點,這之間可以轉化嗎?

當然可以,圍起聯通塊相當于從聯通塊邊界上一點出發向兩邊bfs到起點!!!!!

具體實作的話,可以取聯通塊右邊界的一條線段,然後枚舉上面所有點,向兩邊bfs(舍棄一個方向)。

總結:

bfs處理圍一個圖形的問題可以轉化成圖形上一點向兩邊bfs到起點