**注釋十分詳細,很好理解的。
#includeint main()
//初始化dis陣列,例如dis[3]=e[1][3],1到3距離為dis[3].
for(i=1;i<=n;i++)
dis[i]=e[1][i];
//開始分集合已知最短路徑的頂點集合p和未知頂點集合q,book[i]為0則是在集合q中。
for(i=1;i<=n;i++)
book[i]=0;
book[1]=1;
//dj斯特拉演算法核心語句
for(i=1;i<=n-1;i++)
} }for(i=1;i<=n;i++)
printf("%d ",dis[i]);
getchar(); //使用getchar(),可以將程式暫停,看輸出的結果,也可以用system("pause");
getchar();
return 0;
}
**執行結果:
輸出的空格忘記加了。 0 1 8 4 13 17
單源最短路徑 迪傑斯特拉演算法
dijkstra 演算法 中文名 迪傑斯特拉演算法 是由荷蘭計算機科學家 edsger wybe dijkstra 提出。該演算法常用於路由演算法或者作為其他圖演算法的乙個子模組。舉例來說,如果圖中的頂點表示城市,而邊上的權重表示城市間開車行經的距離,該演算法可以用來找到兩個城市之間的最短路徑。我們...
單源最短路徑問題(狄克斯特拉演算法)
挑戰程式設計競賽2上的一道例題 p250 include using namespace std static const int max 100 static const int infty 1 21 這裡表示int型別最大值 static const int white 0 表示三種狀態 sta...
Dijkstra(迪傑斯特拉) 單源最短路
在圖中,我們可以指定乙個點為起點,計算它到其餘各點的最短路徑。我們尋找乙個與它之間最近的點,以此為基礎不斷的更新它經過此點到其他點的最短路,並重複這個過程,直到所有的點都被尋找一遍。include include includeusing namespace std const int maxn 1...