📄 main71.c
字号:
#include <stido.h>
#include <stdlib.h>
#define mvnum 100
#define maxint 32767
enum boolean{FALSE,TRUE};
typedef char vertextype;
typedef int adjmaxtrix;
typedef struct{
vertextype vexs[mvnum];
adjmatrix arcs[mvnum][mvnum];
}mgraph;
int d1[mvnum],p1[mvnum];
int d[mvnum][mvnum],p[mvnum][mvnum];
#include "save.c"
#include "dijkstra.c"
#include "floyd.c"
void main()
{
mgraph *g;
int m,n,e,v,w,k;
int xz=1;
g=(mgraph *)malloc(sizeof(mgraph));
printf("输入图中顶点个数和边数n,e:");
scanf("%d,%d",&n,&e);
createmgraph(g,n,e);
while(xz!=0){
printf("******求城市之间的最短路径******\n");
printf("================================\n");
printf("1.求一个城市到所有城市的最短路径\n");
printf("2.求任意的两个城市之间的最短路径\n");
printf("================================\n");
printf(" 请选择:1 或 2,选择 0 退出 :");
scanf("%d",&xz);
if(xz==2)
{
floyd(g,n);
printf(" 输入源点(或称起点)和终点:v,w:");
scanf("%d,%d",&v,&w);
k=p[v][w];
if(k==0)
printf("顶点 %d 到 %d 无路径!\n",v,w);
else
{
printf("从顶点%d到%d的最短路径是:%d",v,w,v);
while(k!=w)
{
printf("→%d",k);
k=p[k][w];
}
printf("→%d",w);
printf(" 路径长度:%d\n",d[v][w]);
}
}
else
if(xz==1)
{
printf("求单源路径,输入源点v:");
scanf("%d",&v);
dijkstra(g,v,n);
}
}
printf("结束求最短路径,再见!\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -