#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAX=10010;
const int INF=0x3f3f3f3f;
int cost[MAX][MAX];
int mincost[MAX];
bool used[MAX];
int V;
int prim(){
memset(mincost,0,sizeof(mincost));
for(int i=1;i<=V;i++){
mincost[i]=INF;
used[i]=false;
}
mincost[1]=0;
int res=0;
while(true){
int v=-1;
for(int u=1;u<=V;u++){
if(!used[u]&&(v==-1||mincost[u]<mincost[v]))
v=u;
}
if(v==-1)
break;
used[v]=true;
res+=mincost[v];
for(int u=1;u<=V;u++){
mincost[u]=min(mincost[u],cost[v][u]);
}
}
return res;
}
最小生成树模板prim()
猜你喜欢
转载自blog.csdn.net/queque_heiya/article/details/103926961
今日推荐
周排行