文档介绍://:定义控制台应用程序的入口点。//#include""#include<>#include<>#include<>#include<>#include""#URE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW-1#defineINF32767constintMAXVEX=100;typedefcharVextype;typedefcharVextype;typedefstruct{Vextypevexs[MAXVEX][MAXVEX];//单位名称(顶点信息);intadj[MAXVEX][MAXVEX];//单位之间的相通情况(是否有边);intdis[MAXVEX][MAXVEX];//单位间距离(边的长度);intf[MAXVEX];//各单位去超市的频率;intn;//顶点数和边数;inte;}Mgraph;voidCreatMgraph(Mgraph*G){inti,j,k;printf("请输入单位个数:\n");scanf("%d",&(G->n));printf("请输入单位间的路径数:\n");scanf("%d",&(G->e));printf("请输入单位名称:\n");for(i=0;i<G->n;i++){printf("请输入第%d个单位名称:\n",i);scanf("%s",&G->vexs[i]);}for(i=0;i<G->n;i++)//结构体的初始化;for(j=0;j<G->n;j++){G->adj[i][j]=0;G->dis[i][j]=0;G->f[i]=0;}for(k=0;k<G->e;k++){printf("请输入相通的两单位(输入格式:i,j):\n");scanf("%d,%d",&i,&j);//在距离上体现为无向;printf("请输入相通两个单位间的距离(格式:dis):\n");scanf("%d",&(G->dis[i][j]));G->adj[i][j]=1;G->adj[j][i]=1;G->dis[j][i]=G->dis[i][j];}for(k=0;k<G->n;k++){printf("请输入第%d个单位去超市的相对频率:\n",k);scanf("%d",&(G->f[k]));}for(i=0;i<G->n;i++)//以距离和频率之积作为权值;for(j=0;j<G->n;j++){G->dis[i][j]*=G->f[i];//最终权值非完全无向;if(G->adj[i][j]==0&&i!=j)G->dis[i][j]=INF;}}voidFloyed(Mgraph*G)//带权有向图求最短路径floyd算法{intA[MAXVEX][MAXVEX],path[MAXVEX][MAXVEX];inti,j,k,pre;intcount[MAXVEX];for(i=0;i<G->n;i++)//初始化A[][]和path[][]数组for(j=0;j<G->n;j++)//置初值;{A[i][j]=G->dis[i][j];path[i][j]=-1;count[i]=0;}for(