最短路徑C C

2021-07-27 20:29:59 字數 963 閱讀 9408

本文介紹求最短路徑,但不是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號城市到其他城市的最短路,如果無法到達,輸出...