/*
1. 采用广度优先遍历(BFS)算法求:无权图的单源最短路径
2. 【回顾】最短路径和最小生成树的区别:
1. 最小生成树是指:将图连通之后,整个数的权和加起来最小,针对的是整体
- 普利姆算法
- 克鲁斯卡尔算法
2. 最短路径是指:对于图的两个结点而言,他们之间的路径最短
1. 分类:
1. 单元最短路径:从某顶点出发,到其他全部顶点的最短路径
1. 无权图:
- BFS
2. 无权图,带权图:
- 迪杰斯特拉算法
2. 顶点间的最短路径:全部(每队顶点之间的最短路径)
- 弗洛伊德算法(无权图,带权图)
2. 结果:
1. 从源顶点到目的顶点的路径长度
2. 从源顶点到目的顶点的路径
*/
# include<iostream>
# include<string>
using namespace std;
# define MAX 30
// 最短路径
int dist[MAX];
// 前驱节点
int path[MAX];
// 访问向量
bool sure[MAX];
// 队列
int queue[MAX - 1];
// 图的结构
struct Matrix{
char vex[MAX];
int arc[MAX][MAX];
int vexnum, arcnum;
};
// 队列的结构
struct Queue{
int element[MAX];
int front;
int rear;
};
// 初始化队列
void initQueue(Queue * q){
q->front = q->rear=0;
return;
}
// 入队
int enterQueue(Queue * q, int x){
if ((q->rear + 1) % MAX == q->front)
return false;
q->element[q->rear] = x;
q->rear = (q->rear + 1) % MAX;
return true;
}
// 判断队列是否为空
int isEmptyQueue
采用广度优先遍历(BFS)算法求:无权图的单源最短路径代码实现
本文介绍了如何使用广度优先遍历(BFS)算法求解无权图中从单一起点到其他所有节点的最短路径。通过详细代码解释了BFS算法的工作原理和步骤,帮助读者理解并实现这一经典算法。
摘要由CSDN通过智能技术生成