应该怎么修改才能够将最后选择出来的中心的最短路径输出来?
#include<stdio.h>
#include<stdlib.h>
#define MaxVexNum 50
#define MaxInt 100000
#define MaxEdgeNum 50
//邻接矩阵
typedef int VertexType;
typedef int EdgeType;
typedef struct AMGraph {
VertexType vexs[MaxVexNum];//顶点表
EdgeType arcs[MaxVexNum][MaxVexNum];//邻接矩阵表
int vexnum, edgenum;//顶点数,边数
}AMGraph;
int A[MaxVexNum][MaxVexNum];//顶点i到j的最短距离
int d[MaxVexNum]; //顶点i到其他点的费用
void createGraph(AMGraph* G) {//创建图
printf("请输入顶点数:");
if (scanf("%d", &G->vexnum));
printf("\n请输入边数:");
if (scanf("%d", &G->edgenum));
//初始化顶点表
for (int i = 1; i <= G->vexnum; i++) {
G->vexs[i] = i;
}
for (int i = 1; i <= G->vexnum; i++) {
for (int j = 1; j <= G->vexnum; j++) {
if (i == j)
G->arcs[i][j] = 0;
else
G->arcs[i][j] = MaxInt;
}
}
printf("请输入物流起点,终点与费用(输入时使用,隔开数据)\n");
for (int i = 1; i <= G->edgenum; i++) {
int x, y, w;
if (scanf("%d,%d,%d", &x, &y, &w));
G->arcs[x][y] = w;
}
}
void PrintGraph(AMGraph* G) {
printf("邻接矩阵为:\n");
for (int i = 1; i <= G->vexnum; i++) {
printf(" %d", G->vexs[i]);
}
printf("\n");
for (int i = 1; i <= G->vexnum; i++) {
printf("%d ", G->vexs[i]);
for (int j = 1; j <= G->vexnum; j++)
{
if (G->arcs[i][j] == MaxInt)
{
printf("∞ ");
}
else
{
printf("%d ", G->arcs[i][j]);
}
}
printf("\n");
}
}
//Floyd算法
void Floyd(AMGraph* G)
{
int n = G->vexnum;
//第二步:三重循环,寻找最短路径
for (int v = 1; v <= n; v++) //第一层是代表中间结点
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (G->arcs[i][j] > G->arcs[i][v] + G->arcs[v][j] && G->arcs[i][v] != MaxInt && G->arcs[v][j] != MaxInt)
{
G->arcs[i][j] = G->arcs[i][v] + G->arcs[v][j];
}
}
}
}
}
void printdate(AMGraph* G)
{
int n = G->vexnum;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
d[i] += G->arcs[i][j]; //计算i点到所有点的费用之和
}
}
int min = d[1]; //min为最小费用和
int flag = 1; //flag为到其他顶点费用最小的点
for (int i = 1; i <= n; i++) //找到费用和最小的点
{
if (d[i] < min)
{
min = d[i];
flag = i;
}
}
printf("根据Floyd算法所选定的花费费用最小物流中心为:%d\n", flag);
for (int i = flag + 1; i <= n; i++)
{
if (d[i] == d[flag])
{
printf("或者选定的中心为:%d\n", i); //判断是否有两个或两个以上的适合的点
}
}
}
int main()
{
AMGraph G;
createGraph(&G);
PrintGraph(&G);
Floyd(&G);
printdate(&G);
return 0;
}