社区讨论

听取WA声一片(悬关)

P13427[COCI 2020/2021 #2] Odasiljaci参与者 2已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@mjeawolw
此快照首次捕获于
2025/12/20 20:55
2 个月前
此快照最后确认于
2025/12/22 22:15
2 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,fa[1000010],cnt,sum; 
long double ans;
struct qwq{
	int u,v;
	long double w;
}e[1000010];
int x[1010],y[1010];
bool cmp(qwq xx,qwq yy){
	return xx.w < yy.w;
}
int find(int xx){
	if(fa[xx] == xx) return xx;
	return fa[xx] = find(fa[xx]);
}
int main(){
	cin >> n;
	for(int i = 1;i <= n;i++){
		cin >> x[i] >> y[i];
		fa[i] = i;
	}
	for(int i = 1;i <= n;i++){
		for(int j = i+1;j <= n;j++){
			e[++cnt] = {i,j,sqrt((x[j]-x[i])*(x[j]-x[i])+(y[j]-y[i])*(y[j]-y[i]))};
		}
	}
	sort(e+1,e+cnt+1,cmp);
	for(int i = 1;i <= cnt;i++){
		int xx = find(e[i].u);
		int yy = find(e[i].v);
		if(xx == yy) continue;
		fa[xx] = yy;
		ans += e[i].w;
		sum++;
		//cout <<e[i].w << endl;
		if(sum == n-1) {
			cout<<fixed<<setprecision(7)<<ans/2<<endl;
			return 0;
		}
	}
	return 0;
}

回复

7 条回复,欢迎继续交流。

正在加载回复...