社区讨论
听取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 条回复,欢迎继续交流。
正在加载回复...