求单源最短路径长度的时间复杂度为O(n*n),空间复杂度同样为O(n*n),n为总的节点个数
模块化实现函数源代码如下:
#define POINT 250
#define MAXLENGTH 1000001
int road[POINT][POINT];
int len[POINT];
int found[POINT];
void dj(int count, int source)
{
for(int i=0;i<count;i++)
{
len[i]=road[source][i];
}
len[source]=0;
found[source]=1;
int num;
for(int i=0;i<count;i++)
{
int min=MAXLENGTH;
for(int i=0;i<count;i++)
if(!found[i])
if(len[i]<min)
{
num=i;
min=len[i];
}
found[num]=1;
for(int i=0;i<count;i++)
{
if(!found[i])
if(min+road[num][i]<len[i])
len[i]=min+road[num][i];
}
}
}