最小生成树模板prim()

#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;
}
发布了73 篇原创文章 · 获赞 27 · 访问量 1225

猜你喜欢

转载自blog.csdn.net/queque_heiya/article/details/103926961