單源最短路徑

2021-06-06 12:57:25 字數 785 閱讀 8488

#include

#define max 999

#define maxverts 10

typedef struct 

graph;

void chushi(graph &g);

void dij(graph&,int key,int ,int );

int main()

for(i=1;i<=g.numverts;i++)

dij(g,1,pre,dis);

for(j=1;j<=g.numverts;j++)

printf("%d ",dis[j]);

putchar('\n');

for(j=1;j<=g.numverts;j++)

printf("%d ",pre[j]);

return 0;

}void chushi(graph &g)

void dij(graph &g,int key,int pre,int dis)

dis[key]=0;

pre[key]=0;

g.adj[key][key]=1;

for(i=1;i

}if(v==-1)

else }}

}}/*10

2 1 9

1 6 40

1 3 2

1 4 10

3 2 1

3 4 6

4 6 8

3 5 20

4 5 5

7 4 17

*/

單源最短路徑

最優子結構 最短路徑的子路徑也是最短路徑,動態規劃和貪心演算法的乙個重要指標。環路 一條最短路徑不可能包含環路 1 環路權重為負,如果有一條環路權重為負,則不存在最短路徑 2 環路權重為零,如果包含該環路,則將該環路去掉即可 3 環路權重為正,去掉改環路可以得到更短的路徑,因此不可能是最短路徑 最短...

單源最短路徑

單源最短路徑問題,即在圖中求出給定頂點到其他任一頂點的最短路徑。1.最短路徑的最優子結構性質 該性質描述為 如果p i,j 是從頂點i到j的最短路徑,k和s是這條路徑上的乙個中間頂點,那麼p k,s 必定是從k到s的最短路徑。證明 假設p i,j 是從頂點i到j的最短路徑,則有p i,j p i,k...

單源最短路徑

在最短路徑問題中,給定乙個帶權重的有向圖g v,e 和權重函式w e r,該權重函式將每條邊對映到實數值的權重上。圖中一條路徑p v0,v1,vk 的權重w p 是構成該路徑的所有邊的權重之和。定義從結點u到結點v的最短路徑權重 u,v 從結點u到結點v的最短路徑則定義為任何一條權重w p u,v ...