HDU1242 rescue BFS 優先佇列

2021-07-09 20:13:43 字數 875 閱讀 7166

先來普及一發優先佇列,

是常用到bfs裡面的;

寫法大概是:

structnode

};

其目的是先到的進行先呼叫的思想;

在queue的用法稍微加了新的東西,

priority_queue***;'

其餘的還是老套路;這個題為了比較大小,先把所有初始值變味了1,然後搜尋到後才置為0方便和step比較,儲存;

ac**:

#include #include #include #include using namespace std;

int n , m , step;

int x1,x2,y1,y2;

int vis[205][205];

char map[200][200];

int dir[4][2]=,,,};

struct node

int bfs()

} }return 0 ;

}int main()

} for(i=0;i

ps:這個題是最短路,優先佇列複雜度小,但是實際不一定跑的快;

優先佇列插入是log的,裸佇列是o1的;



hdu 1242 Rescue BFS 優先佇列

起初只是用dfs做,但後來發現問題太多了,起點是乙個,但可能有多個士兵,要找到最小的距離即要求每乙個子問題的結果都是最小值。用深度優先搜尋自然不能每次都返回較小值。而廣度優先搜尋就像使用了分身術一樣,4個方向都有friend去找angel,各自返回自己的最小值,所以思路就是bfs 優先佇列。incl...

hdu1242 BFS 優先佇列

這道題的最短路線不一定是最優路線,所以bfs時用到優先佇列,並加入判斷條件 只有比之前用時少的路線可以被加入佇列,所以就不用標記經過的節點了。ac include include include include include include using namespace std char ch ...

hdu1242 Rescue bfs 優先佇列

直接把angle的位置作為起點,廣度優先搜尋即可,這題不是步數最少,而是time最少,就把以time作為衡量標準,加入優先佇列,隊首就是當前time最少的。遇到angle的朋友就退出。只需15ms ac include include includeusing namespace std const...