迪傑斯特拉 dijkstra 演算法模板(具體凝視)

2021-09-07 11:43:35 字數 748 閱讀 1208

#include #include #include #include #include //定義鄰接矩陣的大小

#define n 100

#define m 100

using namespace std;

typedef struct node mgragh;

void dijkstra(mgragh g,int *dis,int *pre,int v0)

else

pre[v0]=v0;

dis[v0]=0;

}visited[v0]=true;//標記源點v0為訪問過

for(i=1;i0&&g.map[u][k]+mins;

while(v!=v0)

s.push(v);

while(!s.empty())

}int main()

{ int n,e;

while(scanf("%d%d",&n,&e)&&e!=0){

int i,j;

int s,t,w;//起始點s,終點t,邊st的權值為w

mgragh g;

int v0;//源點v0

int *dis=(int *)malloc(sizeof(int)*n);//dis[i]記錄從源點v0到當前點i的路徑長度

int *pre=(int *)malloc(sizeof(int)*n);//記錄每乙個點的前驅,即pre[i]=j;說明i點的前驅為j

for(i=0;i

Dijkstra(迪傑斯特拉)演算法

迪傑斯特拉 dijkstra 演算法是典型最短路徑演算法,用於計算乙個節點到其他節點的最短路徑。它的主要特點是以起始點為中心向外層層擴充套件 廣度優先搜尋思想 直到擴充套件到終點為止。指定乙個節點,例如我們要計算 a 到其他節點的最短路徑 引入兩個集合 s u s集合包含已求出的最短路徑的點 以及相...

dijkstra迪傑斯特拉演算法

注意 1.標頭檔案climits的int max,加上2整數會溢位,每次相加前得判斷被加值是否為int max,int max 10為負數 2.得先初始化再對d s c s g,cost等賦值 fill d 0 d 0 max,int max fill g 0 0 g 0 0 max max,int...

迪傑斯特拉 Dijkstra 演算法

迪傑斯特拉 dijkstra 演算法是典型最短路徑演算法,用於計算乙個節點到其他節點的最短路徑。它的主要特點是以起始點為中心向外層層擴充套件 廣度優先搜尋思想 直到擴充套件到終點為止。通過dijkstra計算圖g中的最短路徑時,需要指定起點s 即從頂點s開始計算 dijkstra演算法算是貪心思想實...