Dijkstra 算法

Dijkstra算法:

數據:

dis[]:記錄每個定點的最短路徑,初始化dis[s]=0,其他節點dis[]=INF;

flag[]:記錄定點是否使用。

G[][]:鄰接矩陣存放圖。

 

算法:

dijkstra(int s)

{

 

 for(int i = 0; i < n; i++)

 dis[i] = (i ==s?0:INF);

 memset(flag,0,sizeof(flag));

 for(int i = 0; i < n; i++)

 {

  int temp,iMin = INF;

  for(int j=0;j < n; j++)

  {

  if(!flag[j] && dis[j] < iMin)

    iMin = dis[temp = y];

  }

  flag[temp] = 1;

  for(int y =0; y < n; y++)

  {

  dis[y] = min(dis[y], dis[temp] + G[temp][y]);

}

 

 }

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章