bfs解决最短路(边权为1)
问题:n行m列矩阵,0能走,1不能走,求左上角到右下角的最短路
算法:宽搜 bfs(breath-first search)bfs的思想就是向外扩展层次,如果边权为1,自然最先扩展到的就是最短路。
bfs:空间要求高;若拿它解决最短路问题必须要边权为1
不多说直接上代码,全在注释里面了
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
typedef pair<int,int> PII; //坐标点
int g[N][N]; //记录图
int d[N][N]; //记录到起点的距离
queue<PII> q; //坐标队列
PII Prev[N][N]; //记录每一个点是从哪个点扩展的
vector<PII> path; //保存最短路径
int n,m;
void bfs()
{
memset(d,-1,sizeof d)