求教这个弗洛伊德算法求最短路径的程序哪里错了。
求教这个弗洛伊德算法求最短路径的程序哪里错了。自己测试了几组数据都没错。。但是判题的有的数据过不去,也不知道是什么数据
#include<stdio.h>
int n;
int D[100][100];
int area[100][100];
int street[100][100][100];
void floyd()
{
int a,b,c;
int i,j,k;
int sum;
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
sum=D[i][k]+D[k][j];
if(sum<D[i][j])
{
D[i][j]=sum;
for(a=0;;a++)
{
if(street[i][k][a]==-1)
break;
}
for(b=0;b<a-1;b++)
{
street[i][j][b]=street[i][k][b];
}
for(a=0;;b++,a++)
{
if(street[k][j][a]==-1) break;
street[i][j][b]=street[k][j][a];
}
}
}
}
int main()
{
int m;
int a,b,c;
int StartNode,EndNode;
scanf("%d",&n);
for(a=0;a<n;a++)
for(b=0;b<n;b++)
for(c=0;c<100;c++)
{
street[a][b][c]=-1;
}
for(a=0;a<n;a++)
for(b=0;b<n;b++)
{
street[a][b][0]=a;
street[a][b][1]=b;
}
for(a=0;a<n;a++)
for(b=0;b<n;b++)
{
scanf("%d",&area[a][b]);
}
for(a=0;a<n;a++)
for(b=0;b<n;b++)
{
D[a][b]=area[a][b];
}
floyd();
scanf("%d",&m);
for(a=0;a<m;a++)
{
scanf("%d%d",&StartNode,&EndNode);
for(b=0;;b++)
{
if(street[StartNode][EndNode][b]==-1) break;
printf("%d\n",street[StartNode][EndNode][b]);
}
}
return 0;
}