最短路徑的實現

2021-07-06 07:03:38 字數 867 閱讀 5231

下面是乙個帶權值的連通圖,就用這個圖為例子來實現最短路徑

首先定義標頭檔案和需要的資料

map表示帶權值的連通圖

path[i]表示從起點到i路徑上所有的頂點 如經過j頂點,則path[i][起點],path[i][j],path[i][i]都為1其餘的都為0

dis表示從起點到每個頂點的最短路徑

find表示是否找到起點到其他節點的最短路徑

#include#define size 6

#define max 10000

//定義帶權值的鄰接矩陣max表示不直接相連

int map[size][size]=,

, ,, ,

} ;int path[size][size];

int dis[size];

int find[size];
shortestpath函式實現最短路徑的尋找

//尋找最短路徑 

void shortestpath(int start)

{ //初始化path和dis 和find

for(int i=0;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號城市到其他城市的最短路,如果無法到達,輸出...

最短路徑演算法實現

什麼是最短路徑呢?考慮到帶權路徑圖,我們把一條路徑上經過的權值之和是該路徑的路徑長度或者是帶權路徑長度。那麼我來個案例,比如我們還是村莊之間修路,我們指定了乙個村莊起點和終點,假如我們修路只能在由村莊之間修路的全部可能情況之中選擇一種,也就是說我們想從我們指定的村莊開始修路,修到我們指定的目的地,我...

最短路徑演算法實現

最短路徑演算法 1 dijkstra演算法 目的是求解固定起點分別到其餘各點的最短路徑 步驟如下 準備工作 構建二位矩陣edge,edge i j 儲存i j的權重,如果i j則edge i j 0,如果i和j不是直達的,則edge i j max int 構建陣列dis,其中dis i 表示其實點...