Dijkstra 算法 Floyd 算法;设有8 个居民点(如上图),每条边代表两居民点的道路,数字代表路长.(1) 求出顶点 1 v 到其余各顶点的最短路径及路长(Dijkstra 算法) ;(2) 求出每两个顶点之间的最短路径及

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 19:47:30

Dijkstra 算法 Floyd 算法;设有8 个居民点(如上图),每条边代表两居民点的道路,数字代表路长.(1) 求出顶点 1 v 到其余各顶点的最短路径及路长(Dijkstra 算法) ;(2) 求出每两个顶点之间的最短路径及
Dijkstra 算法 Floyd 算法;
设有8 个居民点(如上图),每条边代表两居民点
的道路,数字代表路长.
(1) 求出顶点 1 v 到其余各顶点的最短路径及
路长(Dijkstra 算法) ;
(2) 求出每两个顶点之间的最短路径及路长,
并与(1)中的结果相比较(Floyd 算法);
 

Dijkstra 算法 Floyd 算法;设有8 个居民点(如上图),每条边代表两居民点的道路,数字代表路长.(1) 求出顶点 1 v 到其余各顶点的最短路径及路长(Dijkstra 算法) ;(2) 求出每两个顶点之间的最短路径及
#include
#include
#define MVNum 100 //最大顶点数
#define Maxint 32767
typedef char VertexType;
typedef int Adjmatrix;
typedef enum {FALSE,TRUE} boolean;//定义布尔型
typedef struct {
VertexType vexs[MVNum]; //顶点数组,假定为char型
Adjmatrix arcs[MVNum][MVNum];//邻接矩阵,假定为int型
}MGraph;
int D1[MVNum],P1[MVNum];
int D[MVNum][MVNum],P[MVNum][MVNum];
//#include"save.c"
//#include"dijkstra.c"
//#include"floyd.c"
void CreateMGraph(MGraph *G,int n,int e)
{
int i,j,k,w;
for(i=1;ivexs[i]=(char)i;
for(i=1;i