bfs見解和基本模板 最短距離和路徑

2021-10-02 14:31:56 字數 650 閱讀 7527

bfs使用佇列輔助求解

在使用bfs求解問題前,我們應該至少考慮三個問題:

將每個結點作為一種狀態,用什麼資料結構來記錄這種狀態

用該狀態該怎麼擴充套件節點,該節點可以怎樣被擴充套件,要注意邊界控制

在佇列中以什麼標準優先擴充套件,必要時使用優先佇列

這三個問題使用下面這個基本迷宮問題回答:

node n(x, y);

迷宮問題 可以上 下 左 右 四個方向移動。

距離短優先,當然會有權值小優先等等。

還有乙個問題,我在一道題中遇到的:下面bfs中的vis[u.x][u.y] = 1到底放在哪?

void bfs(int m, int n) ;

int dir_y[4] = ;

struct node

};void bfs(int m, int n)

}bfs(m, n);

cout << "長為:" << dis[m-1][n-1] << endl;

// 將路徑存入棧

stackres;

int x = m-1, y = n-1;

while(true)

while(!res.empty())

return 0;

}

貨倉選址 最短距離和

題目鏈結 在一條數軸上有 n 家商店,它們的座標分別為 a1 an。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。第一行輸入整數n。第二行n個整數a1 an。輸出乙個整數,表示距離之和的最小值。資料範圍...

點到直線和點到線段的最短距離

一.點到直線距離 已知乙個點p x0,y0 求點到直線ax by c 0的距離公式為 d ax0 by0 c的絕對值 a 2 b 2 的算術平方根 如求點p 1,2 到直線2x y 10 0的距離 x0 1,y0 2,a 2,b 1,c 10 代入公式 d 2 1 1 2 10 的絕對值 根號 2 ...

求單源最短路徑兩頂點最短距離(BFS)

矩陣 求圖g中頂點x的第乙個臨接點,如果有返回其下標,否則返回 1 int firstneighbor1 mgraph g,int x return 1 矩陣 假設g中頂點y是頂點x的乙個相鄰結點,返回除y之外頂點x的下乙個臨接點的定點號,若y是最後乙個頂點則返回 1 int nextneighbo...