已知圖g=(v,e)和乙個源頂點s,寬度優先搜尋以一種系統的方式探尋g的邊,從而「發現」s所能到達的所有頂點,並計算s到所有這些頂點的距離(最少邊數),該演算法同時能生成一棵根為s且包括所有可達頂點的寬度優先樹。對從s可達的任意頂點v,寬度優先樹中從s到v的路徑對應於圖g中從s到v的最短路徑,即包含最小邊數的路徑。該演算法對有向圖和無向圖同樣適用。
之所以稱之為寬度優先演算法,是因為演算法自始至終一直通過已找到和未找到頂點之間的邊界向外擴充套件,就是說,演算法首先搜尋和s距離為k的所有頂點,然後再去搜尋和s距離為k+l的其他頂點。
#include
using
namespace std;
typedef pair<
int,
int> pii;
const
int n =
110;
int n, m;
int g[n]
[n], d[n]
[n];
intbfs()
);int dx[4]
=, dy[4]
=;while
(q.size()
));}
}}return d[n -1]
[m -1]
;}intmain()
簡單BFS 走迷宮
描述 l上次旅行進入了乙個迷宮,他被困在了乙個n m的矩形迷宮中。l開始在左上角的點,他知道出口在右下角,他可以向四個方向移動到相鄰的點。不過這個迷宮有些魔法,每個格仔有一種顏色,不同的顏色代表不一樣的功能 如果格仔是紅色的,表示當前格仔無法通行 如果格仔是粉紅,表示格仔可以正常通行 如果是橙色,當...
bfs入門 走迷宮
題意 給乙個n m的二維陣列,s表示入口,t表示出口,點表示牆不可達,表示路可達。求s走到到t的最短距離。輸入樣例 5 6.s t.輸出樣例 include include include include include include include using namespace std con...
BFS 電子老鼠走迷宮
如下圖12 12方格圖,找出一條自入口 2,9 到出口 11,8 的最短路徑。輸入 第一行為乙個數n,表示迷宮大小 第二行為4個數,表示起點和終點 第三起為n n的矩陣,0表示通路,1表示牆。輸出 第一行為路徑 見樣例 第二行為總的步數 表示不會用迴圈佇列 用乙個佇列存要搜的節點,搜過的節點刪除。從...