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