P1546,样例过了,但只有40分,有没有大佬看下是啥问题
查看原帖
P1546,样例过了,但只有40分,有没有大佬看下是啥问题
1088782
Lycdeer楼主2024/8/21 14:12
#include<bits/stdc++.h>
using namespace std;
int n,g[1005][1005],dis[1005],ans;
bool vis[1005];
void Prim(){
	memset(dis,0x3f,sizeof(dis));
	dis[1]=0;
	for(int i=1;i<n;i++){
		int x=0;
		for(int j=1;j<=n;j++)
			if(!vis[j]&&(x==0||dis[j]<dis[x])) x=j;
		vis[x]=true;
		for(int j=1;j<=n;j++)
			if(!vis[j]) dis[j]=min(dis[j],g[i][j]);
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1,x;j<=n;j++) cin>>g[i][j];
	Prim();
	for(int i=2;i<=n;i++) ans+=dis[i];
	cout<<ans;
	return 0;
}
2024/8/21 14:12
加载中...