城市之间最短路径:
算法描述:
(1) 图中所有顶点集合为V,最小生成树顶点集合为U,初始时V包含所有顶点,U中只有起始顶点。
(2) 计算下一个顶点到其实顶点V0的最短路径,并加入U。
(3) 更新未加入U中的各个顶点到起始顶点的距离值为发现的最小的权值。
(4) 重复该计算方法。
#include <stdio.h>
#define MAX_DIST 65535
#define MAX_POINT 5
void calc_dist(int arr[MAX_POINT][MAX_POINT], int nSize, int nStart)
{
int arrWeight[MAX_POINT];
int arrPoints[MAX_POINT];
int i = 0, j = 0;
int min = 0;
int nPoint = 0;
// Get the distance of reference points
for (i = 0; i < MAX_POINT; i++)
{
arrWeight[i] = arr[nStart][i];
arrPoints[i] = 0;
}
arrPoints[nStart] = 1;
arrWeight[nStart] = 0;
for (i = 0; i < MAX_POINT; i++)
{
// Get the min distance of reference point
min = MAX_DIST;
nPoint = 0;
for (j = 0;