# include <stdio.h>
# define MAX 20
int creat_cost(int cost[][MAX]) //cost 用来表示图的邻接矩阵
{
int arcnum,vexnum,v1,v2,w;
printf ("请输入顶点个数和弧数\n"); //输入图的顶点数和弧数
scanf ("%d %d",&vexnum,&arcnum);
for (int i=1; i<=vexnum; ++i)
{
for (int j=1; j<=vexnum; ++j)
{
cost[i][j] = 9999; //假设9999为无限大
}
}
for (int k=1; k<=arcnum; ++k)
{
printf ("请输入两个顶点以及之间的距离\n")
printf ("v1,v2,w = "); //输入所有边的一对顶点v1,v2,以及弧长
scanf (" %d %d %d",&v1,&v2,&w); //并且根据输入数据建立邻接矩阵
cost[v1][v2] = w;
}
return vexnum;
}
void dijkstra(int cost[][MAX],int vexnum) //dijkstra算法 求最短路径
{
int path[MAX],s[MAX],dist[MAX],i,j,n,w,v,sum,min,v1;/* s数组记录顶点v是否已经确定了最短路径
s[v]=1, 顶点v已经确定了最短路径
s[v]=0,顶点v还没有确定最短路径
dist数组表示当前求出的从v1到v2的最短路径
path是路径数组,path[i]表示源点到顶点vi之间最短路径上vi的前驱顶点
*/
printf ("输入源点\n");
scanf (" %d",&v1); //输入源点v1
for (i=1; i<=vexnum; ++i
dijkstra算法--求两点之的最短路径
最新推荐文章于 2024-09-10 16:58:30 发布
本文介绍了Dijkstra算法,用于求解图中两点间的最短路径。首先通过邻接矩阵建立图,然后详细阐述了Dijkstra算法的步骤,并提供了一个C语言实现的示例代码,演示如何找出从指定源点开始的最短路径。


608

被折叠的 条评论
为什么被折叠?



