BFS入門(偽模板)

2021-08-03 17:07:20 字數 861 閱讀 5067

#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.步數 ...