最短路

来源:互联网 发布:在淘宝上买的刀开刃 编辑:程序博客网 时间:2024/06/05 05:05
void dji(int v0){    //v0:初始点   int pos = v0;   for(int i=1;i<=n;i++){        dist[i] = map[v0][i];  //dist[]数组存储各点到初始点的距离   }   vis[pos] = 1;                //vis[]数组标记是否已经找到到一个点最短路   for(int i=1;i<n;i++){//控制查找n-1次    int min = INF;  //初始min为一个极大的数INF                    for(int j=1;j<=n;j++){          //查找到初始点的最短路      if(vis[j]==0 && dist[j]<min){           pos = j;       min = dist[pos];      }       }       vis[pos] = 1;//pos这个点已经找到最短路,标记       for(int j=1;j<=n;j++){           if(vis[j]==0 && dist[j]>dist[pos]+map[pos][j]){   //j作为中间点(两个点相连要么直接连,要么通过中间点),判断直接连短还是通过其他点短               dist[j] = map[pos][j]+dist[pos];           }       }   }}

0 0