邻接矩阵的实现int prime(int cost[][MAXV],int n){ bool vis[MAXV]; int dis[MAXV]; memset(vis,false,sizeof(vis)); fill(dis,dis+MAXV,INF); int ans=0; dis[0]=0; for(int j=1;j<n;j++){ int Min=INF; int k=-1; for(int i=0;i<n;i++){ if(!vis[i]&&dis[i]<Min){ Min=dis[i]; k=i; } } if(k==-1) return -1; vis[k]=true; for(int i=0;i<n;i++) if(!vis[i]&&cost[k][i]!=-1){ if(dis[i]>cost[k][i]) dis[i]=cost[k][i]; //这和最短距离的更新不一样。 } } for(int i=0;i<n;i++) ans+=dis[i]; return ans; }
时间: 2024-10-23 21:51:42