会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Yuxon's Blog
竹坞无尘水槛清 相思迢递隔重城 秋阴不散霜飞晚 留得枯荷听雨声
Dijkstra算法源程序
#define
MAX 1e+8
void
dijkstra(GraphMatrix graph, Path dist[])
{
int
i,j,minvex; AdjType min;
init(
&
graph,dist);
/**/
/*
初始化,此时集合U中只有顶点v0
*/
for
(i
=
1
; i
<
graph.n; i
++
)
{ min
=
MAX; minvex
=
0
;
for
(j
=
1
; j
<
graph.n; j
++
)
if
((graph.arcs[j][j]
==
0
)
&&
(dist[j].length
<
min))
/**/
/*
在V-U中选出距离值最小顶点
*/
{ min
=
dist[j].length; minvex
=
j; }
if
(minvex
==
0
)
break
;
/**/
/*
从v0没有路径可以通往集合V-U中的顶点
*/
graph.arcs[minvex][minvex]
=
1
;
/**/
/*
集合V-U中路径最小的顶点为minvex
*/
for
(j
=
1
; j
<
graph.n; j
++
)
/**/
/*
调整集合V-U中的顶点的最短路径
*/
{
if
(graph.arcs[j][j]
==
1
)
continue
;
if
(dist[j].length
>
dist[minvex].length
+
graph.arcs[minvex][j])
{ dist[j].length
=
dist[minvex].length
+
graph.arcs[minvex][j];
dist[j].prevex
=
minvex;
}
}
}
}
posted on
2006-07-06 10:38
口俞克木公
阅读(
1644
) 评论(
0
)
收藏
举报
刷新页面
返回顶部
导航
博客园
首页
新随笔
联系
订阅
管理
公告