迪杰斯特拉算法报错怎么解决

有没有帮忙看看哪个指针出错了,自己能力有限没找出来

//一个图 求最短路径(Dijstrla或者Floyed任意选择)
//这里选用Dijstrla算法
#define maxm 32767
int* dist = new int[100];
int* path = new int[100];
bool* s = new bool[100];

//选择邻接矩阵存放图(无向图)
typedef struct {
    char Vexs[100];
    int Arcs[100][100];
    int Vexnum, Arcnum;
}AMGraph;
//确定元素在Vexs数组中的位置 并返回下标
int LocateVex(AMGraph G,char v) {
    for (int i = 0; i if (G.Vexs[i] == v)
            return i;
        else
        {
            return -1;
        }
    }
}
//通过键盘输入 创建一个无向图
void GreatAMGraph(AMGraph& AMG) {
    int i, j, k;
    cout << "请输入定点数以及边数并用空格键分开:" << endl;
    cin >> AMG.Vexnum >> AMG.Arcnum;
    cout << endl;

    cout << "请输入顶点的名字:" << endl;

    for (i = 0; i < AMG.Vexnum; i++)
    {
        cout << "请输入第" << (i + 1) << "个顶点" << endl;
        cin >> AMG.Vexs[i];
    }
    cout << endl;
    for (i = 0; i < AMG.Vexnum; i++)
    {
        for (int j = 0; j < AMG.Vexnum; j++)
        {
            AMG.Arcs[i][j] = maxm;
        }
    }
    cout << "请输入顶点以及依附の权值以格式a b 10" << endl;
    for (k = 0; k < AMG.Arcnum; k++)
    {
        char v1, v2;
        int weight;
        cout << "请输入两个顶点的名字以及他们的权值以格式a b 10" << endl;
        cin >> v1 >> v2 >> weight;
        i = LocateVex(AMG, v1);
        j = LocateVex(AMG, v2);
        AMG.Arcs[i][j] = weight;
        AMG.Arcs[j][i] = weight;
    }
} 
    
//迪杰斯特拉算法定义
void Dijstrla(AMGraph G,int v0) {
    int v,i,w,min,n;
    n = G.Vexnum;
    for ( v = 0; v < n; v++)
    {
        s[v] = false;
        dist[v] = G.Arcs[v0][v];
        if (dist[v][v] = v0;
        else
            path[v] = -1;
    }

    s[v0] = true;  
    dist[v0] = 0;
    for (i = 1; i < n; i++)
    {
        min = maxm;
        for (w = 0; w < n; w++)
            if (!s[w] && dist[w] < min) {
                v = w;
                min = dist[w];
            }

            s[v] = true;
            for (w = 0; w < n; ++w)
                 if (!s[w]&&(dist[v]+G.Arcs[v][w])[w])
                 {
                       dist[w] = dist[v] + G.Arcs[v][w];
                       path[w] = v;
                 }
    }
}

void showPath(AMGraph G,int start,int end){
    if (path[end]!=-1)
    {
        showPath(G, start, path[end]);
        cout << G.Vexs[path[end]] << "--";
    }
}
int main() {
    AMGraph g;
    GreatAMGraph(g);
    cout << endl;
    cout << "请输入开始顶点和结束顶点用空格键分开:" << endl;
    char start, end;
    int sn, en;
    cin >> start >> end;
    sn = LocateVex(g, start);
    en = LocateVex(g, end);

    //调用迪杰斯特拉算法
    Dijstrla(g, sn);
    //显示路径
    showPath(g, sn, en);

    system("pause");
    return 0;
}


程序运行到showPath函数的时候产生以下异常:

报错:0x00007FF678E84ADD 处(位于 暨大复试专项.exe 中)引发的异常: 0xC0000005: 读取位置 0x000001F70AFBE7A4 时发生访问冲突。

希望可以帮忙看看代码是哪里出了问题 感激不尽!

1.检查算法的输入数据是否正确,是否满足解题要求; 2.检查算法的算法步骤是否正确,是否符合解题要求; 3.检查算法的输出结果是否正确,是否符合解题要求。 4.检查算法的时间复杂度和空间复杂度,确保算法的有效性和可行性。

你看一下是不是path 数组未初始化,导致在 showPath 函数中出现了访问冲突。