用領接表實現dijkstra 課本模板改裝)

2021-10-01 02:03:48 字數 1096 閱讀 3352

在dijkstra中領接表是乙個非常實用的乙個工具,如果當所給的城市較多的時候,用二維陣列就很容易出現記憶體超限,在一些比較簡單的題中可能給的數也比較簡單不會出現記憶體超限,但是只要是稍微再難點的題用二維陣列就不行了,因此掌握領接表還是非常有必要的,下面是我自己根據課本寫的乙個領接表,並可以順便求出走的是哪條最短的路,具體看下面**。

#include

#include

int dis[

2000

],book[

2000

],u[

2000

],v[

2000

],w[

2000];

int n,m;

int first[

2000

],next[

2000

],f[

20000];

int inf=

99999999

;int

main()

//雙向路徑,反向再存一遍

for(i=m+

1;i<=

2*m;i++

)for

(i=1

;i<=n;i++

)for

(i=1

;i<=n;i++

)//遍歷每一條邊

} book[x]=1

;for

(k=first[x]

;k!=-1

;k=next[k])}

}for

(i=1

;i<=n;i++

)printf

("%d "

,dis[i]);

printf

("\n");

t=1;

a[t++

]=n;

k=f[n]

;//從後往前每次找到此節點的父親節點

while

(k)for

(i=t-

1;i>=

1;i--

)printf

("%d "

,a[i]);

}return0;

}

旅行計畫 拓撲排序 領接表

description 這個國家有n個城市,編號為1至n,並且有m條道路連線著,從其中乙個城市出發,並只往東走到城市i停止。所以他需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多。現在,你只知道每...

Dijkstra 鄰接表的實現

題目 編寫程式,實現以鄰接表做儲存結構,實現求源點到其餘各頂點的最短距離 pnode li 100 頭節點 int sign 100 標記是否用過,用於輸出距離為無窮大的點 int star 起點 void addnode pnode li,int v1,int v2,int w 當li v1 後沒...

用指標實現表

include stdafx.h include iostream.h templateclass list template class node template class list list bool empty const int size const bool retrieve int ...