本文主要是介绍非加权图的单源最短路径问题(解法:BFS)以及BFS、DFS的简单实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、非加权图的单源最短路径问题(解法:BFS)
此问题可以利用Dijkstra算法求解时,只需要把所有边的权值看成1即可,但复杂度高。此处利用BFS加以求解。以下给定几个参数方便存储信息。
非加权单源最短路径解法:BFS
start: 有向图中的计算的起始结点
dist: 存储结点到源结点的距离的数组,初始值为无穷大,虽然每条边权值都相等,但源结点到所求结点经过几条边就代表权值总各
preNode:存储每个结点的前驱结点的数组,从而利用print函数可以显示所走的结点信息
flag: 表明结点是否已经遍历过的布尔数组
#include<iostream>
#include<vector>
#include<queue>/*非加权单源最短路径解法:BFSstart: 有向图中的计算的起始结点dist: 存储结点到源结点的距离的数组,初始值为无穷大,虽然每条边权值都相等,
但源结点到所求结点经过几条边就代表权值总各preNode:存储每个结点的前驱结点的数组,从而利用print函数可以显示所走的结点信息flag: 表明是否有已经遍历过结点的布尔数组
*/void bfsForUnweightedShortDistance(vector<vector<int>>& nums, int start
, vector<bool>& flag, vector<int>& dist, vector<int>& preNode) {queue<int> q;/
这篇关于非加权图的单源最短路径问题(解法:BFS)以及BFS、DFS的简单实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!