本文介紹求最短路徑,但不是dijkstra演算法和bellman-ford演算法求有向圖中一點到其餘各點的最短路徑,而是求解有向圖中指定兩點的最短路徑。
方法很簡單,建立與bfs之上,因此我們只需要修改佇列中的內容。
這裡本來該有圖的,但是最近忙專業課,下回補上!
typedef
struct qnodeqnode;
具體演算法如下:(ps:最後輸出的答案是反向的,可以利用乙個棧或者陣列反向輸出都行)
#include
#include
using
namespace
std;
#define vrtype int
#define vertextype char
#define max_vertex_num 30
typedef
structmgraph;
void creatmgraph(mgraph &g)
typedef
struct qnodeqnode;
typedef
structliqueue;
void initqueue(liqueue *&q)
bool emptyqueue(liqueue *q)
void enqueue(liqueue *&q, mgraph g, int n, qnode *q) //n表示該點的在vex陣列中的位置
}void dequeue(liqueue *&q, qnode *&p)
}int visit[max_vertex_num]=;
void shortestpath(mgraph g,vertextype start,vertextype end)
}while(p)
cout
C C 最短路徑
用book陣列的值表示路徑長度即可,省略 includeusing namespace std const int inf 0x3f3f3f3f const int maxn 105 int graph maxn maxn void floyd int n int main floyd n retu...
最短路徑 Floyd演算法) c c
如果要得到圖中各個頂點之間的最短路徑,方法1 可以對每乙個頂點採用dijkstra演算法 方法2 可以採用floyd演算法,它是一種用來求雙源點之間最短路徑的演算法,採用鄰接矩陣來儲存圖 輔助結構 int d maxsize maxsize 表示從各個頂點之間最短路徑長度 例 d i j 表示從i頂...
Codeup最短路徑 最短路徑
n個城市,標號從0到n 1,m條道路,第k條道路 k從0開始 的長度為2 k,求編號為0的城市到其他城市的最短距離。第一行兩個正整數n 2 n 100 m m 500 表示有n個城市,m條道路,接下來m行兩個整數,表示相連的兩個城市的編號。n 1行,表示0號城市到其他城市的最短路,如果無法到達,輸出...