玄关16分求调!!!
  • 板块P1194 买礼物
  • 楼主daixihan
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/7/24 19:46
  • 上次更新2025/7/25 09:09:38
查看原帖
玄关16分求调!!!
1191361
daixihan楼主2025/7/24 19:46
#include<bits/stdc++.h>
using namespace std;
const int N=505;
struct Edge{
	int x,y,z;
}edge[250000];
int n,a,x,m,cnt,fa[N],ans,b;
bool cmp(Edge a,Edge b){
	return a.z<b.z;
}
int findRoot(int x){
	if(fa[x]!=x) fa[x]=findRoot(fa[x]);
	return fa[x];
}
int main(){
	cin>>a>>n;
	for(int i=1;i<=n;i++){
		fa[i]=i;
		edge[++m]={0,i,a};
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>b;
			if(i<j) edge[++m]={i,j,b};
		}
	}
	sort(edge+1,edge+m+1,cmp);
	for(int i=1;i<=m;i++){
		int rx=findRoot(edge[i].x),ry=findRoot(edge[i].y);
		if(rx==ry) continue;
		fa[rx]=ry;
		ans+=edge[i].z;
	}
	cout<<ans;
	return 0;
}

2025/7/24 19:46
加载中...