求助 prim错误
  • 板块学术版
  • 楼主wu13115899522
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/8/22 09:50
  • 上次更新2023/11/4 09:32:46
查看原帖
求助 prim错误
442963
wu13115899522楼主2021/8/22 09:50
#include<bits/stdc++.h>
#define N 5001
using namespace std;
int cost[N][N],close[N],dis[N],n,m,sum;//离树最近的点是谁 
bool vis[N];
void prim(){
	memset(dis,63,sizeof(dis));//初始化为无穷大 
	vis[1]=true;
	for(int i=2;i<=n;i++){
		close[i]=1;
		if(cost[1][i]) dis[i]=cost[i][1]; 
	}
	for(int i=1;i<=n;i++){
		int mind=dis[0],minp;
		for(int j=2;j<=n;j++){//找一条离树最短的边 
			if(!vis[j]&&dis[j]<mind){
				minp=j;
				mind=dis[j];
			}
		}  
		sum+=dis[minp];
		vis[minp]=true;
		
		for(int j=1;j<=n;j++){//更新 
			if(!vis[j]&&dis[j]>cost[j][minp]){
				dis[j]=cost[j][minp],close[j]=minp;
			}
		}  
	}
}
int main(){
	cin>>n>>m;
    for(int i=1;i<=m;i++){
			int x,y,z;
			cin>>x>>y>>z;
			cost[x][y]=cost[y][x]=z;
	}
	prim();

	return 0;
}
2021/8/22 09:50
加载中...