題目大意:給定n*n的網路,起點k,終點t,s表示蛇(最多5條,且經過s時,若蛇是活的則時間+1),數字代表鑰匙編號(最多m把且必須按照順序取),每次移動時間+1,求集齊所有鑰匙到達終點的最短時間
bfs迷宮搜尋。
vis記錄狀態:行,列,蛇是否存活,鑰匙的集齊情況。每個狀態只被入隊一次。
#include
#include
#include
using
namespace
std;
const
int inf = 0x3f3f3f3f;
const
int n = 110;
struct node
node(int _r,int _c,int _s,int _key,int _t)
:r(_r),c(_c),s(_s),key(_key),t(_t){}
};bool vis[n][n][1
<<5][10];
char a[n][n];
int n, m;
int dr[4] = ;
int dc[4] = ;
int bfs(int srow, int scol)
}return ret;
}int main()
else
if(a[i][j]=='s')
int ans = bfs(srow, scol);
if(ans==inf) printf("impossible\n");
else
printf("%d\n", ans);
}return
0;}
hdu 5025 bfs 狀態壓縮
首先因為鑰匙是順序拿取的,所以記錄當前取到第幾把就可以 因為殺蛇是無序的,所以要用0 1二進位制數表示 然後寬搜就好了 wrong了一天就是讀入問題,默默反省 include include include include include include define max 107 using n...
hdu 逃離迷宮 BFS
給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...
BFS 迷宮的最短路徑
迷宮的最短路徑 給定乙個大小為n m的迷宮。迷宮由通道和牆壁組成,每一步可以 向鄰接的上下左右四個方位的通道移動,請求出從起點到終點所需的最小不熟。此題假設一定能從起點到終點 限制條件 n,m 100 樣例 輸入 10 10 s g 輸出 22 include include includeusin...