大神过来帮忙看下这个算法哪里错了呀
int D[N][N],Path[N][N]; void floyd(){
int i,j,k;
for(i=0;i<N;i++)
for(j=0;j<N;j++){
D[i][j]=m->arcs[i][j];
Path[i][j]=-1;
}
for(k=0;k<N;k++)
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if((D[i][k]+D[k][j])<D[i][j]){
D[i][j]=D[i][k]+D[k][j];
Path[i][j]=k;
}
}
void shortestPath(){
int i,j,p,q,k;
int b[10];
floyd();
printf("请输入起点序号:");
scanf("%d",&i);
printf("请输入终点序号:");
scanf("%d",&j);
if(i==j)
printf("起点与终点重合!错误!\n");
else if(i>10||i<0||j>10||j<0)
printf("输入有误!!!\n");
if(i!=j){
printf("起点:%s,终点:%s\n最短路径:",m->vexs[i]->name,m->vexs[j]->name);
p=Path[i][j];
if(p==-1)
printf("empty\n");
else{
q=0;
b[q++]=j;
while(p!=j){
b[q++]=p;
p=Path[i][p];
}
b[q]=i;
for(k=q;k>0;k--)
printf("%s->",m->vexs[b[k]]->name);
}
}
printf("\n\n按任意键继续\n\n");
getch();
}