BFS HDU 1429 勝利大逃亡 續

2021-07-09 19:35:02 字數 903 閱讀 6143

思路:因為存在門和鑰匙,所以乙個點可能被多次訪問,解決方法是在vis陣列中儲存當前持有的鑰匙的狀態,對於乙個相同的點,一種持有鑰匙的狀態只能訪問一次,很容易理解在沒有更多鑰匙的情況下,多次訪問這個點得到的結果不會更優(因為只有10把鑰匙,**中用二進位制儲存,但用bool陣列儲存也是完全可以的。另外用不用優先佇列對於這題的影響不大)

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

typedef long long ll;

typedef unsigned int ui;

#define mp(a,b) make_pair(a,b)

#define mem(a,b) memset(a,b,sizeof(a))

#define debug(a) printf("debug: %d\n",a)

const int mod = 1000000007;

const int maxn =22;

const int inf = 0x3f3f3f3f;

int n,m,t;

int sx,sy,ex,ey;

char mp[maxn][maxn];

bool vis[maxn][maxn][4];

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

struct node

node(int x,int y,int v,int k)

bool operator<(const node& rhs) const

};int bfs()

else if (c>='a' && c<='j')

cout<

BFS HDU1253勝利大逃亡

problem description ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個a b c的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位...

1429 勝利大逃亡( 續 ) hdu

ignatius再次被魔王抓走了 搞不懂他咋這麼討魔王喜歡 這次魔王汲取了上次的教訓,把ignatius關在乙個n m的地牢裡,並在地牢的某些地方安裝了帶鎖的門,鑰匙藏在地牢另外的某些地方。剛開始ignatius被關在 sx,sy 的位置,離開地牢的門在 ex,ey 的位置。ignatius每分鐘只...

HDU1429 勝利大逃亡 續

學習位壓縮很好的一道題,因為只有10把鑰匙,那麼可以把10鑰匙壓縮二進位制,比如1000就表示身上只要第4把鑰匙的狀態,110表示帶有第2把和第3把鑰匙,那麼要判斷當前的鑰匙串有沒有能開啟當前門鑰匙,那麼就只要乙個 運算就可以,因為11101110 00100000 00100000 這樣就說明那一...