急问:谁有Djistra的最短路由路径算法程序啊

fanz2000 2002-05-16 11:16:16
thanks
...全文
66 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanz2000 2002-05-17
  • 打赏
  • 举报
回复
thanks very much
starfish 2002-05-16
  • 打赏
  • 举报
回复
#define infinity 1000000 // a big int
#define max_vertexes 50 // the max count of vertexes

typedef int Graph[max_vertexes][max_vertexes]; // use adjacent matrix to represent graph



/*===============================================

单源最短路径

Dijkstra 算法

适用条件:所有边的权非负

!!注意:
1.输入的图的权必须非负
2.顶点标号从0开始
3.当i,j不相邻时G[i,j]=infinity

================================================*/
int Dijkstra(Graph G,int n,int s,int t, int path[])
{
int i,j,w,minc, d[max_vertexes], mark[max_vertexes];
for (i=0; i<n; i++) mark[i]=0;

for (i=0; i<n; i++)
{
d[i]=G[s][i];
path[i]=s;
}

mark[s]=1; path[s]=0; d[s]=0;

for(i=1; i<n; i++)
{
minc = infinity;
w = 0;
for( j = 0; j < n; j++ )
if( ( mark[j]==0 ) && ( minc >= d[j] ) ) {
minc=d[j];w=j;
}
mark[w]=1;
for(j=0; j<n; j++)
if( (mark[j]==0) && ( G[w][j] != infinity ) && ( d[j] > d[w]+G[w][j] ) )
{
d[j]=d[w]+G[w][j];
path[j]=w;
}
}
return d[t];
}
围绕“面试”、“算法”、“编程”三个主题的程序员编程艺术系列(简称TAOPP系列),从今年4月写第一篇起,至今快有一年。近1年的创作中,写了二十七章,共计22篇文章。这是本人的第4大原创作品,不过与之前微软面试100题系列,红黑树系列,及十三个经典算法研究系列相比,编程艺术系列的某些篇文章的作者除了我本人自己,或多或少还得到了不少朋友的支持,我把这些朋友组织起来,成立了一个工作室,它的名字叫做编程艺术室。 编程艺术系列最初名为程序员面试题狂想曲,即为面试服务,后来随着加入与我一起创作的人越来越多,我们逐渐意识到,为面试服务不应该成为我们最终或最主要的目的,而应该注重提高广大初学者的编程能力,以及如何运用编程技巧和高效的算法解决实际应用问题。这才是计算机科学与编程的本质。于是,我们便把程序员面试题狂想曲系列更名为程序员编程艺术系列,然后把狂想曲创作组确定为编程艺术室。 并提出了我们的宗旨,即如下,编程艺术室致力于以下三点工作: 1. 针对一个问题,不断寻找更高效的算法,并予以编程实现。 2. 解决实际中会碰到的应用问题。 3. 经典算法的研究与实现。 总体突出一点:编程,如何高效的编程解决实际问题。

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧