void Dijkstra(){
for(int i=1;i<=n;i++)
dis[i] = map[1][i]; int k;
for(int i=1;i<n;i++){
int tmin = maxint;
for(int j=1;j<=n;j++)
if( !used[j] && tmin > dis[j] ){
tmin = dis[j];
k = j;
}
used[k] = 1;
for(int j=1;j<=n;j++)
if( dis[k] + map[k][j] < dis[j] )
dis[j] = dis[k] + map[k][j];
}
printf("%d",dis[n]);
} /* 求1到N的最短路,dis[i] 表示第i个点到第一个点的最短路 By Ping*/
Dijkstra源代码
最新推荐文章于 2024-07-01 15:30:19 发布