prim算法。
一一确认到已确认点的最短距离
void prim2()
{int i,j,k;
int min;
for(i=1;i<=now;i++)
for(j=1;j<=now;j++)
if(map[i][j]==0)
map[i][j]=MAXINT;
count=0;
vis[1]=1;
for(i=1;i<=now;i++) //各个点到1的小花费
lowcost[i]=map[i][1];
for(i=2;i<=now;i++)
{
min=MAXINT;
for(j=2;j<=now;j++)
if(lowcost[j]<min&&!vis[j]) //到被确认集合的小花费并且没有被加入到确定集合
{
k=j;
min=lowcost[j];
}
count+=min; //最小花费
vis[k]=1; //将K加入到集合
for(j=2;j<=now;j++) // 基于贪心的
if(lowcost[j]>map[k][j]&&!vis[j]) //到被确认集合的最小花费
lowcost[j]=map[k][j];
}
}