#include
#include
#include
#include
#include
using
namespace
std;
#define n 10000000//迷宮的規模
type start,aim;//type為某種資料型別
//start初始位置,aim目標位置
struct node;
//記錄兩種狀態
//1.記錄該步的狀態
//2.步數
bool vis[n];
//標記該種狀態是否被走過
queue
q;//廣搜佇列
void bfs()
node tmp;
//tmp用於暫時儲存狀態
int x=q.front().x;
//一維只有x
//多維要從多重維度記錄
int step=q.front().step;
q.pop();
//進行減一的操作
//廣度試探
if(x>=1&&!vis[x-1])
//要保證減1後有意義,所以要x >= 1
//其中之一的試探條件
//已經到達的位置不能重複到達
//進行加一的操作
if(x1])
//總的來說試探條件有三個
//1.在邊界之內
//2.還未走過
//3.該處沒有」牆「
//進行乘兩倍的操作
if(x2*x])
}}int main()
//可以證明此處進隊的可以是整個物件
BFS模板 A計畫
time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status practice hdu 2102 description 可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命...
雙向BFS模板
如果已經知道搜尋的開始狀態和結束狀態,要找乙個滿足某種條件的一條路徑 一般是最短路徑 為了避免無謂的 組合 產生,就可以採取雙向廣度搜尋演算法,也就是從開始狀態和結束狀態同時開始搜尋,乙個向前搜,乙個向後找。這樣做的好處是什麼?我們不妨假設每次搜尋的分支因子是r,如果最短的路徑長為l的話 也就是搜了...
BFS基本模板
改改之後就是農夫追牛的ac 題目位址 include using namespace std define n 10000000 迷宮的規模 type start,aim type為某種資料型別 start初始位置,aim目標位置 struct node 記錄兩種狀態 1.記錄該步的狀態 2.步數 ...