資料結構 最短路徑 Dijkstra演算法

2021-08-08 14:29:57 字數 1040 閱讀 9561

最短路徑——dijkstra演算法

設計實現有向網,針對隨機有向網例項和隨機源點,用dijkstra演算法求解出單源點到其他各頂點的最短路徑。給出求解過程的動態演示。可考慮實現不用儲存結構上的實現。

如下圖所示,若要建立乙個這樣的圖,且源點為1時,則輸入順序為:

**:

#include#include#define inf 0x3f3f3f3f//用來表示正無窮

#define max 100 //最多可存放100個頂點

using namespace std;

typedef pairp; //用於優先佇列中距離與頂點的對應,其中first為距離,second為原點到達的點

bool visit[max]; //標記為已找出最短路徑的點

int v,e,s; //v為點的個數,e為邊的個數,s為源點

int graph[max][max]; //圖的儲存採用鄰接矩陣

int dist[max]; //dist表示當前點距源點最短距離,最終為最短距離

int path[max];

void init();//初始化

void dijkstra(const int s);

void dfs(const int x);//將路徑回溯出來

int main(void)

cout

dijkstra(s);

coutque;//將pair放入優先佇列,並且規定按照pair.first的較小值建立優先權

que.push(p(0,s));

while(que.size())}}

}void dfs(const int x)

資料結構 最短路徑 Dijkstra

include stdio.h include stdlib.h include io.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define maxedge 20 ...

資料結構實驗 最短路徑

實驗內容 對於使用者隨機輸入的乙個有向帶權圖,求從某個頂點到其他各頂點的最短路徑。include define maxv 20 define inf 32 若不存在,則設的權為32,表示無窮大 typedef struct vertextype 頂點型別 typedef struct matgrap...

資料結構 最短路徑問題

求解這個問題的時候我們用到dijkstra演算法,演算法的描述如下 1 首先定義乙個陣列用來儲存從源點到每乙個頂點的最短路徑 不可達用無窮表示 使用s集合來儲存已經求得最短路徑的頂點,那麼剩餘頂點就存放在集合t中 2 第一次迭代的時候s只有源點,然後根據s集合中的頂點來更新最短路徑陣列d中的值,每次...