Floyd算法求最短路径

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法

应该怎么修改才能够将最后选择出来的中心的最短路径输出来?

我想要达到的结果
#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;
}