不知道什么哪里的问题求各位大大解啊,,
#include<stdio.h>#define max 99
void dijkstra(int a[][],int k,int pre[],int dist[],int n)
{
int i,j,p,min;
for(i=0;i<n;i++)
{
dist[i]=a[k][i];
if(dist[i]<max)
pre[i]=k;
else
pre[i]=0;
}
pre[k]=0;
dist[k]=0;
a[k][k]=1;
for(p=0;p<n-1;p++)
{
min=max;
j=-1;
for(i=0;i<n;i++)
if(a[i][i]==0&&dist[i]<min)
{
j=i;
min=dist[i];
}
if(j==-1)
break;
else
{
a[j][j]=1;
for(i=0;i<n;i++)
if(a[i][i]==0&&(min+a[j][i]<dist[i]))
{
dist[i]=min+a[j][i];
pre[i]=j;
}
}
}
}
void main()
{
int b[3][3]={{0,1498,2151},{1498,0,2313},{2151,2313,0}};
int pre[3];
int dist[3];
int i;
dijkstra(b[3][3],1,pre,dist,3);
for(i=0;i<3;i++)
{
printf("%d\n",pre[i]);
printf("%d\n",dist[i]);
}
}