在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 ...