直接把angle的位置作為起點,廣度優先搜尋即可,這題不是步數最少,而是time最少,就把以time作為衡量標準,加入優先佇列,隊首就是當前time最少的。遇到angle的朋友就退出。只需15ms
ac**:
#include#include#includeusing namespace std;
const int maxn=202;
int d[maxn][maxn];
int n,m;
char g[maxn][maxn];
struct node
node(int x,int y):x(x),y(y)
bool operator <(const node &p)const
}s;const int dx=;
const int dy=;
int bfs()
} return -1;
}void print(){
for(int i=0;i
hdu 1242 Rescue BFS 優先佇列
起初只是用dfs做,但後來發現問題太多了,起點是乙個,但可能有多個士兵,要找到最小的距離即要求每乙個子問題的結果都是最小值。用深度優先搜尋自然不能每次都返回較小值。而廣度優先搜尋就像使用了分身術一樣,4個方向都有friend去找angel,各自返回自己的最小值,所以思路就是bfs 優先佇列。incl...
HDU1242 rescue BFS 優先佇列
先來普及一發優先佇列,是常用到bfs裡面的 寫法大概是 structnode 其目的是先到的進行先呼叫的思想 在queue的用法稍微加了新的東西,priority queue 其餘的還是老套路 這個題為了比較大小,先把所有初始值變味了1,然後搜尋到後才置為0方便和step比較,儲存 ac inclu...
hdu1242 BFS 優先佇列
這道題的最短路線不一定是最優路線,所以bfs時用到優先佇列,並加入判斷條件 只有比之前用時少的路線可以被加入佇列,所以就不用標記經過的節點了。ac include include include include include include using namespace std char ch ...