标签:
1.Dijkstra算法(计算正权图上的单源最短路 single-source shortest paths (sssp) )从单个节点出发到所有节点的最短路。
该算法适用于:有向图和无向图。
1). O(n^2)的实现:邻接矩阵map存储实现,INF表示无穷大
void Dijkstra(int s, int e, int n) //从s开始到e点的最短路,有n个节点,编号:0-->n-1. { memset(vis, 0, sizeof(vis)); int i, j; for(i=0; i<n; i++) dis[i]=(i==0?0:INF); for(i=0; i<n; i++) { int mm=INF; int pos; for(j=0; j<n; j++) { if(!vis[j] && dis[j]<m) m=dis[pos=j]; } vis[pos]=1; for(j=0; j<n; j++) { d[j]=min(dis[j], dis[pos]+map[pos][j] ); } } printf("%d\n", dis[e]); //假设最短路一定存在 }
标签:
原文地址:http://www.cnblogs.com/yspworld/p/4272337.html