Prim BST

int Max=1000;
const int INF=INT_MAX;

int n,G[Max][Max];
int d[Max];
bool visit[Max]={0};

int BST(int st){                                          //邻接矩阵
	fill(d,d+Max,INF);
	d[st]=0;
	int answer=0;
	for(int i=0;i<n;i++){
		int u=-1,Min=INF;
		for(int j=0;j<n;j++){
			if(!visit[j]&&d[j]<Min){
				u=j;
				Min=d[j];
			}
		}
		if(u==-1) return -1;
		visit[u]=1;
		answer+=d[u];
		for(int v=0;v<n;v++){
			if(!visit[v]&&G[u][v]!=INF){
				if(G[u][v]<d[v]){
					d[v]=G[u][v];
				}
			}
		}
	}
	return answer;
}



struct node{
	int v;
	int dis;
};

vector<node> graph[Max];
int n,d[Max];
bool visit[Max]={0};

int BST(int st){                                               //邻接表
	fill(d,d+Max,INF);
	d[st]=0;
	int answer=0;
	for(int i=0;i<n;i++){
		int u=-1,Min=INF;
		for(int j=0;j<n;j++){
			if(!visit[j]&&d[j]<Min){
				u=j;
				Min=d[j];
			}
		}
		if(u==-1) return -1;
		visit[u]=1;
		answer+=d[u];
		for(int v=0;v<graph[u].size();v++){
			if(!visit[v]&&graph[u][v].dis<d[v]){
				d[v]=graph[v][v].dis;
			}
		}
	}
	return answer;
}

全部评论

相关推荐

12-27 22:14
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
12-15 14:25
云南大学 Java
lei22:入职可能会看学信网,最好别伪装,这个简历找实习肯定是够的,肯定会有收 28 届实习生的公司的,多投就行
点赞 评论 收藏
分享
12-27 22:49
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务