prim算法
索引1-n,初始化所有结点未访问且距离为到第一个点的距离,然后从第一个点开始跑贪心算法。
每一次找一个离当前已访问结点集合 最近的 未访问 的点u。
访问u,更新所有 未访问 离(当前结点集合+u)更近的结点距离。
找n次结束。
void Prim(){
int i,j,k,tmp,ans;
for(i=1;i<=n;i++)
dis[i]=inf;//初始化
dis[1]=0;
for(i=1;i<=n;i++){
tmp=inf;
for(j=1;j<=n;j++){
if(!vis[j]&&tmp>dis[j]){
tmp=dis[j];
k=j;
}//找出最小距离的节点
}
vis[k]=1;//把访问的节点做标记
for(j=1;j<=n;j++){
if(!vis[j]&&dis[j]>map[k][j])
dis[j]=map[k][j];//更新最短距离
}
}
}