hdu5025 bfs迷宮找最短路徑 模範題

2021-08-23 14:38:33 字數 849 閱讀 3122

題目大意:給定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...