求关键路径,这里为啥会报错?

完整代码:
void KeyPath(AdjGraph* G)
{
int topsort[MAXV];
TopSort(G, topsort);
int ve[MAXV] = { 0 };
int vl[MAXV];
int lnode = topsort[0];
int enode = topsort[G->n - 1];
int ee = 0;
int el = 0;
int i = 0;
ArcNode* p = NULL;
for (i = 0; i < G->n; i++)
{
p = G->adjlist[i].firstarc;
while (p != NULL)
{
if (ve[p->adjvex] < ve[i] + p->weight)
{
ve[p->adjvex] = ve[i] + p->weight;
}
p = p->nextarc;
}
}
for (i = 0; i < G->n; i++)//vl数组的初始化
{
//vl[i] = ve[G->n - 1];
vl[i] = ve[enode];
}
for (i = G->n - 2; i >= 0; i++)//n -2
{
p = G->adjlist[i].firstarc;
while (p != NULL)
{
//if (ve[i] - p->weight < vl[i])
if (vl[p->adjvex] - p->weight < vl[i])
{
vl[i] = vl[p->adjvex] - p->weight;
}
p = p->nextarc;
}
}
for (i = 0; i < G->n; i++)
{
p = G->adjlist[i].firstarc;
while (p != NULL)
{
ee = ve[i];
//el = vl[i] - p->weight;
el = vl[p->adjvex] - p->weight;
if (ee == el)
{
printf("%3d%3d%3d", i, p->adjvex, p->weight);
}
p = p->nextarc;
}
}
}