无法解决error C2109: 下标要求数组或指针类型

最近在学习数据结构的图……以上是有问题的代码,还没有写完。但是这一段:
图片说明

和这一段:

图片说明

各位大神应该是看到了i或者j下面划得红线吧,问题就是出在这里。以下po出完整的代码段,但是还是没有写完。

 #include<iostream>
using namespace std;
#define MVNum 100
#define MaxInt 0
#define Int 1

/*int VerTexType;
int ArcType;*/

struct GraphAM
{
    int vexs[MVNum];
    int arcs[MVNum];
    int vexnum, arcnum;
};

void CreateUDN(GraphAM &G)
{
    int i, j, k, v1, v2;     //i,j,k用于计数,v1,v2用于储存输入一条边依附的顶点
    cout << "请输入……" << endl;
    cin >> G.vexnum >> G.arcnum;
    for (i = 0; i < G.vexnum; ++i)
        cin >> G.vexs[i];
    for (i = 0; i < G.vexnum; ++i)
        for (j = 0; j < G.vexnum; ++j)
            G.arcs[i][j] = MaxInt;
    for (k = 0; k < G.arcnum; ++k)
    {
        cin >> v1 >> v2;
        i = v1; j = v2;
        G.arcs[i][j] = Int;
        G.arcs[j][i] = G.arcs[i][j];
    }
}

int main()
{
    GraphAM * G;
}

可能会看得比较辛苦,十分抱歉&十分感谢

1.一维数组改成二维
2.调用之前记得new或者malloc

 #include<iostream>
using namespace std;
#define MVNum 100
#define MaxInt 0
#define Int 1

/*int VerTexType;
int ArcType;*/

struct GraphAM
{
    int vexs[MVNum];
    int arcs[MVNum][MVNum];
    int vexnum, arcnum;
};

void CreateUDN(GraphAM &G)
{
    int i, j, k, v1, v2;     //i,j,k用于计数,v1,v2用于储存输入一条边依附的顶点
    cout << "请输入……" << endl;
    cin >> G.vexnum >> G.arcnum;
    for (i = 0; i < G.vexnum; ++i)
        cin >> G.vexs[i];
    for (i = 0; i < G.vexnum; ++i)
        for (j = 0; j < G.vexnum; ++j)
            G.arcs[i][j] = MaxInt;
    for (k = 0; k < G.arcnum; ++k)
    {
        cin >> v1 >> v2;
        i = v1; j = v2;
        G.arcs[i][j] = Int;
        G.arcs[j][i] = G.arcs[i][j];
    }
}

int main()
{
    GraphAM *G = new GraphAM;
    CreateUDN(*G);
}

int arcs[MVNum];
arcs是一维数组,你怎么搞出两个下标?

int arcs[MVNum] 改成 int arcs[MVNum][MVNum];

谢谢以上的几位好心的大神,而我对我自己挺无语的……没有发现这样的错误……十分感谢几位!!!