最短路徑的三種實現方法

2021-09-08 19:21:36 字數 1468 閱讀 5102

//

//helpbuptguoan

////

created by new_life on 16/8/24.

////

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define n 5 //

圖的大小

const

int type = 3;/*

用於設定圖儲存的資料結構,

1: 二維陣列a

2: 一維陣列a 存放vector

3: map

*/const

int inf = 1e3; //

值上限struct

graphg;

void init()//

初始化,把每個資料結構都清空.

}}void add_edge(int u,int

v)

else

if(type == 2

)else

}void

getrandgraph()

int tcnt =cnt;

for(int j=0;j10);j++)//

隨機產生10個

cnt--;}}

}void

dijkstra()

g.length[ g.s ] = 0

;

for(int t=0; t//

n次迴圈

}mark[id] = 1

;

if(type == 1

) }

}else

if(type == 2

) }

}else

//type == 3}}

}}

}void

print()

}else

if(type == 3

) printf(

"隨機圖的鄰接表形式:\n");

for(int i=0;i)

printf("\n

");}

printf("\n

");printf(

"從0到各個節點的最短距離:\n");

printf(

"節點:");

for(int i=0;i"

%d "

,i);

printf("\n

");printf(

"距離:");

for(int i=0;i)

printf("\n

");}int main(int argc, const

char *ar**)

最短路徑是三種求法

說是總結,其實自己也沒有學多長時間只是把自己這段時間的一些經驗總結下來,用來供後來的初學者漲點經驗吧。對於學習演算法,個人的理解就是首先要去理解演算法的本質,然後想想演算法的實現過程,如何用 去描述這個演算法,然後就是去記模板了 對於像我這種初學者來說,這一步其實蠻重要的 另外說下做最短路問題的一些...

三種最短路的總結

三種最短路演算法的對比 floyd dijkstra bellman ford 空間複雜度 o n 2 0 m 0 m 時間嗎複雜度 o n3 o m n logn o mn 適用情況 稠密圖稠密圖 稀疏圖負權邊 不可以不可以 可以floyd演算法簡單,dijkstra不能解決負權邊優化後可以得到m...

hdu2544 最短路徑 三種演算法

複雜度 o e lo ac include include include include include include using namespace std include const int maxn 105 const int inf 1000000 map 陣列模擬鄰接表 int vex...